ASCII Online Version - June 8, 1994 CPI-C 2.0 +--- NOTE -----------------------------------------------------------+ | | | Before using this document, read the general information under | | "Notices." | | | +--------------------------------------------------------------------+ SECOND EDITION (JUNE 1994) This edition replaces and obsoletes the previous edition, SC31-6180-00. This edition applies to the Common Programming Interface Communications (CPI-C) architecture. This edition incorporates text which is copyright 1990 X/Open Company Limited related to the following calls: o Cancel_Conversation (CMCANC) o Convert_Incoming (CMCNVI) o Convert_Outgoing (CMCNVO) o Extract_Security_User_ID (CMESUI) o Extract_TP_Name (CMETPN) o Set_Conversation_Security_Password (CMSCSP) o Set_Conversation_Security_Type (CMSCST) o Set_Conversation_Security_User_ID (CMSCSU) o Set_Processing_Mode (CMSPM) o Specify_Local_TP_Name (CMSLTP) o Wait_For_Conversation (CMWAIT) Publications are not stocked at the address given below. If you want more IBM publications, ask your IBM representative or write to the IBM branch office serving your locality. In the United States, you may also order IBM publications by calling 1-800-879-2755. A form for your comments is provided at the back of this publication. If the form has been removed, address your comments to: IBM Corporation Dept. E15 P.O. Box 12195 Research Triangle Park, NC 27709-9990 U.S.A. IBM may use or distribute any of the information you supply in any way it believes appropriate without incurring any obligation to you. (C) COPYRIGHT INTERNATIONAL BUSINESS MACHINES CORPORATION 1988, 1994. ALL RIGHTS RESERVED. Note to U.S. Government Users -- Documentation related to restricted rights -- Use, duplication or disclosure is subject to restrictions set forth in GSA ADP Schedule Contract with IBM Corp. ---------------------------------------------------------------------------------------------------------------------------------- Contents FIGURES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 TABLES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 NOTICES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 Trademarks and Service Marks . . . . . . . . . . . . . . . . . . 1 ACKNOWLEDGEMENTS . . . . . . . . . . . . . . . . . . . . . . . . 1 CHAPTER 1. INTRODUCTION . . . . . . . . . . . . . . . . . . . . 1 Who Should Read This Book . . . . . . . . . . . . . . . . . . . . 1 What is New in This Book . . . . . . . . . . . . . . . . . . . . 1 Softcopy Book . . . . . . . . . . . . . . . . . . . . . . . . . . 1 How to Use This Book . . . . . . . . . . . . . . . . . . . . . . 1 General Path through This Book . . . . . . . . . . . . . . . . 1 Naming Conventions--Calls, Characteristics, Variables, and Values 1 History of CPI Communications . . . . . . . . . . . . . . . . . . 1 CPI-C and the Conversational Model . . . . . . . . . . . . . . 1 Relationship to Products . . . . . . . . . . . . . . . . . . . 1 Functional Levels of CPI Communications . . . . . . . . . . . . . 1 CPI-C 1.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 CPI-C 1.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 X/Open CPI-C . . . . . . . . . . . . . . . . . . . . . . . . . 1 CPI-C 1.2 . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 CPI-C 2.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 Call Table . . . . . . . . . . . . . . . . . . . . . . . . . . 1 CHAPTER 2. CPI COMMUNICATIONS TERMS AND CONCEPTS . . . . . . . . 1 Communication across a Network . . . . . . . . . . . . . . . . . 1 Conversation Types . . . . . . . . . . . . . . . . . . . . . . . 1 Send-Receive Modes . . . . . . . . . . . . . . . . . . . . . . . 1 Program Partners . . . . . . . . . . . . . . . . . . . . . . . . 1 Identifying the Partner Program . . . . . . . . . . . . . . . . 1 Operating Environment . . . . . . . . . . . . . . . . . . . . . . 1 Node Services . . . . . . . . . . . . . . . . . . . . . . . . . 1 Side Information . . . . . . . . . . . . . . . . . . . . . . . 1 Distributed Directory . . . . . . . . . . . . . . . . . . . . . 1 CPI Communications Directory Object . . . . . . . . . . . . . 1 Using the Distributed Directory . . . . . . . . . . . . . . . 1 Interaction with Side Information and Set Calls . . . . . . . 1 Distributed Security . . . . . . . . . . . . . . . . . . . . . 1 Operating System . . . . . . . . . . . . . . . . . . . . . . . 1 Program Calls . . . . . . . . . . . . . . . . . . . . . . . . . . 1 Establishing a Conversation . . . . . . . . . . . . . . . . . . . 1 Multiple Conversations . . . . . . . . . . . . . . . . . . . . 1 Partner Program Names . . . . . . . . . . . . . . . . . . . . 1 Multiple Outbound Conversations . . . . . . . . . . . . . . . 1 Multiple Inbound Conversations . . . . . . . . . . . . . . . 1 Contexts and Context Management . . . . . . . . . . . . . . . . 1 Relationship between Contexts and Conversations . . . . . . . 1 Relationship between Contexts and Security Parameters . . . . 1 Inbound and Outbound Conversations . . . . . . . . . . . . . 1 Conversation Characteristics . . . . . . . . . . . . . . . . . . 1 Modifying and Viewing Characteristics . . . . . . . . . . . . . 1 Characteristic Values and CRMs . . . . . . . . . . . . . . . . 1 Characteristic Values and Send-Receive Modes . . . . . . . . . 1 Automatic Conversion of Characteristics . . . . . . . . . . . . 1 Concurrent Operations . . . . . . . . . . . . . . . . . . . . . . 1 Using Multiple Program Threads . . . . . . . . . . . . . . . . 1 Non-Blocking Operations . . . . . . . . . . . . . . . . . . . . . 1 Conversation-Level Non-Blocking . . . . . . . . . . . . . . . . 1 Queue-Level Non-Blocking . . . . . . . . . . . . . . . . . . . 1 Working with Wait Facility . . . . . . . . . . . . . . . . . 1 Wait Facility Scenario . . . . . . . . . . . . . . . . . . . 1 Using Callback Function . . . . . . . . . . . . . . . . . . . 1 Canceling Outstanding Operations . . . . . . . . . . . . . . . 1 Non-Blocking Calls and Context Management . . . . . . . . . . . 1 Conversation Security . . . . . . . . . . . . . . . . . . . . . . 1 Data Conversion . . . . . . . . . . . . . . . . . . . . . . . . . 1 Program Flow--States and Transitions . . . . . . . . . . . . . . 1 Support for Resource Recovery Interfaces . . . . . . . . . . . . 1 Coordination with Resource Recovery Interfaces . . . . . . . . 1 Take-Commit and Take-Backout Notifications . . . . . . . . . . 1 The Backout-Required Condition . . . . . . . . . . . . . . . . 1 Responses to Take-Commit and Take-Backout Notifications . . . . 1 Chained and Unchained Transactions . . . . . . . . . . . . . . 1 Joining a Transaction . . . . . . . . . . . . . . . . . . . . . 1 Superior and Subordinate Programs . . . . . . . . . . . . . . . 1 Additional CPI Communications States . . . . . . . . . . . . . 1 Valid States for Resource Recovery Calls . . . . . . . . . . . 1 CHAPTER 3. PROGRAM-TO-PROGRAM COMMUNICATION TUTORIAL . . . . . . 1 Interpreting the Flow Diagrams . . . . . . . . . . . . . . . . . 1 Starter-Set Flows . . . . . . . . . . . . . . . . . . . . . . . . 1 Example 1: Data Flow in One Direction . . . . . . . . . . . . 1 Example 2: Data Flow in Both Directions . . . . . . . . . . . 1 Advanced-Function Flows . . . . . . . . . . . . . . . . . . . . . 1 Data Buffering and Transmission . . . . . . . . . . . . . . . . 1 Example 3: Using the Distributed Directory to Locate the Partner Program . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 Example 4: The Sending Program Changes the Data Flow Direction 1 Example 5: Validation and Confirmation of Data Reception . . . 1 Example 6: The Receiving Program Changes the Data Flow Direction 1 Example 7: Reporting Errors . . . . . . . . . . . . . . . . . 1 Example 8: Error Direction and Send-Pending State . . . . . . 1 Example 9: Sending Program Issues a Commit . . . . . . . . . . 1 Example 10: A Successful Commit with Conversation State Change 1 Example 11: Conversation Deallocation before the Commit Call . 1 Example 12: Accepting Multiple Conversations Using Blocking Calls . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 Example 13: Accepting Multiple Conversations Using Conversation-Level Non-Blocking Calls . . . . . . . . . . . . 1 Example 14: Establishing a Full-Duplex Conversation . . . . . 1 Example 15: Using a Full-Duplex Conversation . . . . . . . . . 1 Example 16: Terminating a Full-Duplex Conversation . . . . . . 1 Example 17: Using Queue-Level Non-Blocking . . . . . . . . . . 1 CHAPTER 4. CALL REFERENCE SECTION . . . . . . . . . . . . . . . 1 Call Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 Programming Language Considerations . . . . . . . . . . . . . . . 1 Application Generator . . . . . . . . . . . . . . . . . . . . . 1 C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 COBOL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 FORTRAN . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 PL/I . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 REXX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 RPG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 How to Use the Call References . . . . . . . . . . . . . . . . . 1 Locations of Key Topics . . . . . . . . . . . . . . . . . . . . . 1 Summary List of Calls and Their Descriptions . . . . . . . . . . 1 Accept_Conversation (CMACCP) . . . . . . . . . . . . . . . . . . 1 Accept_Incoming (CMACCI) . . . . . . . . . . . . . . . . . . . . 1 Allocate (CMALLC) . . . . . . . . . . . . . . . . . . . . . . . . 1 Cancel_Conversation (CMCANC) . . . . . . . . . . . . . . . . . . 1 Confirm (CMCFM) . . . . . . . . . . . . . . . . . . . . . . . . . 1 Confirmed (CMCFMD) . . . . . . . . . . . . . . . . . . . . . . . 1 Convert_Incoming (CMCNVI) . . . . . . . . . . . . . . . . . . . . 1 Convert_Outgoing (CMCNVO) . . . . . . . . . . . . . . . . . . . . 1 Deallocate (CMDEAL) . . . . . . . . . . . . . . . . . . . . . . . 1 Deferred_Deallocate (CMDFDE) . . . . . . . . . . . . . . . . . . 1 Extract_AE_Qualifier (CMEAEQ) . . . . . . . . . . . . . . . . . . 1 Extract_AP_Title (CMEAPT) . . . . . . . . . . . . . . . . . . . . 1 Extract_Application_Context_Name (CMEACN) . . . . . . . . . . . . 1 Extract_Conversation_Context (CMECTX) . . . . . . . . . . . . . . 1 Extract_Conversation_State (CMECS) . . . . . . . . . . . . . . . 1 Extract_Conversation_Type (CMECT) . . . . . . . . . . . . . . . . 1 Extract_Initialization_Data (CMEID) . . . . . . . . . . . . . . . 1 Extract_Maximum_Buffer_Size (CMEMBS) . . . . . . . . . . . . . . 1 Extract_Mode_Name (CMEMN) . . . . . . . . . . . . . . . . . . . . 1 Extract_Partner_ID (CMEPID) . . . . . . . . . . . . . . . . . . . 1 Extract_Partner_LU_Name (CMEPLN) . . . . . . . . . . . . . . . . 1 Extract_Secondary_Information (CMESI) . . . . . . . . . . . . . . 1 Extract_Security_User_ID (CMESUI) . . . . . . . . . . . . . . . . 1 Extract_Send_Receive_Mode (CMESRM) . . . . . . . . . . . . . . . 1 Extract_Sync_Level (CMESL) . . . . . . . . . . . . . . . . . . . 1 Extract_TP_Name (CMETPN) . . . . . . . . . . . . . . . . . . . . 1 Extract_Transaction_Control (CMETC) . . . . . . . . . . . . . . . 1 Flush (CMFLUS) . . . . . . . . . . . . . . . . . . . . . . . . . 1 Include_Partner_In_Transaction (CMINCL) . . . . . . . . . . . . . 1 Initialize_Conversation (CMINIT) . . . . . . . . . . . . . . . . 1 Initialize_For_Incoming (CMINIC) . . . . . . . . . . . . . . . . 1 Prepare (CMPREP) . . . . . . . . . . . . . . . . . . . . . . . . 1 Prepare_To_Receive (CMPTR) . . . . . . . . . . . . . . . . . . . 1 Receive (CMRCV) . . . . . . . . . . . . . . . . . . . . . . . . . 1 Receive_Expedited_Data (CMRCVX) . . . . . . . . . . . . . . . . . 1 Release_Local_TP_Name (CMRLTP) . . . . . . . . . . . . . . . . . 1 Request_To_Send (CMRTS) . . . . . . . . . . . . . . . . . . . . . 1 Send_Data (CMSEND) . . . . . . . . . . . . . . . . . . . . . . . 1 Send_Error (CMSERR) . . . . . . . . . . . . . . . . . . . . . . . 1 Send_Expedited_Data (CMSNDX) . . . . . . . . . . . . . . . . . . 1 Set_AE_Qualifier (CMSAEQ) . . . . . . . . . . . . . . . . . . . . 1 Set_Allocate_Confirm (CMSAC) . . . . . . . . . . . . . . . . . . 1 Set_AP_Title (CMSAPT) . . . . . . . . . . . . . . . . . . . . . . 1 Set_Application_Context_Name (CMSACN) . . . . . . . . . . . . . . 1 Set_Begin_Transaction (CMSBT) . . . . . . . . . . . . . . . . . . 1 Set_Confirmation_Urgency (CMSCU) . . . . . . . . . . . . . . . . 1 Set_Conversation_Security_Password (CMSCSP) . . . . . . . . . . . 1 Set_Conversation_Security_Type (CMSCST) . . . . . . . . . . . . . 1 Set_Conversation_Security_User_ID (CMSCSU) . . . . . . . . . . . 1 Set_Conversation_Type (CMSCT) . . . . . . . . . . . . . . . . . . 1 Set_Deallocate_Type (CMSDT) . . . . . . . . . . . . . . . . . . . 1 Set_Error_Direction (CMSED) . . . . . . . . . . . . . . . . . . . 1 Set_Fill (CMSF) . . . . . . . . . . . . . . . . . . . . . . . . . 1 Set_Initialization_Data (CMSID) . . . . . . . . . . . . . . . . . 1 Set_Log_Data (CMSLD) . . . . . . . . . . . . . . . . . . . . . . 1 Set_Mode_Name (CMSMN) . . . . . . . . . . . . . . . . . . . . . . 1 Set_Partner_ID (CMSPID) . . . . . . . . . . . . . . . . . . . . . 1 Set_Partner_LU_Name (CMSPLN) . . . . . . . . . . . . . . . . . . 1 Set_Prepare_Data_Permitted (CMSPDP) . . . . . . . . . . . . . . . 1 Set_Prepare_To_Receive_Type (CMSPTR) . . . . . . . . . . . . . . 1 Set_Processing_Mode (CMSPM) . . . . . . . . . . . . . . . . . . . 1 Set_Queue_Callback_Function (CMSQCF) . . . . . . . . . . . . . . 1 Set_Queue_Processing_Mode (CMSQPM) . . . . . . . . . . . . . . . 1 Set_Receive_Type (CMSRT) . . . . . . . . . . . . . . . . . . . . 1 Set_Return_Control (CMSRC) . . . . . . . . . . . . . . . . . . . 1 Set_Send_Receive_Mode (CMSSRM) . . . . . . . . . . . . . . . . . 1 Set_Send_Type (CMSST) . . . . . . . . . . . . . . . . . . . . . . 1 Set_Sync_Level (CMSSL) . . . . . . . . . . . . . . . . . . . . . 1 Set_TP_Name (CMSTPN) . . . . . . . . . . . . . . . . . . . . . . 1 Set_Transaction_Control (CMSTC) . . . . . . . . . . . . . . . . . 1 Specify_Local_TP_Name (CMSLTP) . . . . . . . . . . . . . . . . . 1 Test_Request_To_Send_Received (CMTRTS) . . . . . . . . . . . . . 1 Wait_For_Completion (CMWCMP) . . . . . . . . . . . . . . . . . . 1 Wait_For_Conversation (CMWAIT) . . . . . . . . . . . . . . . . . 1 APPENDIX A. VARIABLES AND CHARACTERISTICS . . . . . . . . . . . 1 Pseudonyms and Integer Values . . . . . . . . . . . . . . . . . . 1 Character Sets . . . . . . . . . . . . . . . . . . . . . . . . . 1 Variable Types . . . . . . . . . . . . . . . . . . . . . . . . . 1 Integers . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 Character Strings . . . . . . . . . . . . . . . . . . . . . . . 1 Distinguished Name . . . . . . . . . . . . . . . . . . . . . . . 1 Program Function Identifier (PFID) . . . . . . . . . . . . . . . 1 PFID Assignment Algorithms . . . . . . . . . . . . . . . . . . 1 Program Binding . . . . . . . . . . . . . . . . . . . . . . . . . 1 APPENDIX B. RETURN CODES AND SECONDARY INFORMATION . . . . . . . 1 Return Codes . . . . . . . . . . . . . . . . . . . . . . . . . . 1 Secondary Information . . . . . . . . . . . . . . . . . . . . . . 2 Application-Oriented Information . . . . . . . . . . . . . . . 2 CPI Communications-Defined Information . . . . . . . . . . . . 2 CRM-Specific Secondary Information . . . . . . . . . . . . . . 2 Implementation-Related Information . . . . . . . . . . . . . . 2 APPENDIX C. STATE TABLES . . . . . . . . . . . . . . . . . . . . 2 How to Use the State Tables . . . . . . . . . . . . . . . . . . . 2 Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 Explanation of Half-Duplex State Table Abbreviations . . . . . . 2 Conversation Characteristics ( ) . . . . . . . . . . . . . . . 2 Conversation Queues () . . . . . . . . . . . . . . . . . . . . 2 Return Code Values [ ] . . . . . . . . . . . . . . . . . . . . 2 data_received and status_received ( , ) . . . . . . . . . . . . 2 Table Symbols for the Half-Duplex State Table . . . . . . . . . 2 Effects of Calls to the SAA Resource Recovery Interface on Half-Duplex Conversations . . . . . . . . . . . . . . . . . . . 2 Effects of Calls on Half-Duplex Conversations to the X/Open TX Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 Explanation of Full-Duplex State Table Abbreviations . . . . . . 2 Conversation Characteristics ( ) . . . . . . . . . . . . . . . 2 Conversation Queues () . . . . . . . . . . . . . . . . . . . . 2 Return Code Values [ ] . . . . . . . . . . . . . . . . . . . . 2 data_received and status_received ¤ , ‡ . . . . . . . . . . . . 2 data_received and status_received ( , ) . . . . . . . . . . . . 2 Table Symbols for the Full-Duplex State Table . . . . . . . . . 2 Effects of Calls to the SAA Resource Recovery Interface on Full-Duplex Conversations . . . . . . . . . . . . . . . . . . . 2 Effects of Calls on Full-Duplex Conversations to the X/Open TX Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 APPENDIX D. MAPPING CPI COMMUNICATIONS TO LU 6.2 AND OSI TP CRMS 2 CPI Communications and LU 6.2 CRMs . . . . . . . . . . . . . . . 2 Send-Pending State and the error_direction Characteristic . . . 2 CPI Communications Programs Communicating with APPC Programs . 2 SNA Service Transaction Programs . . . . . . . . . . . . . . . 2 Relationship between LU 6.2 Verbs and CPI Communications Calls 2 CPI Communications and OSI TP CRMs for Half-Duplex Conversations 2 Summary of CPI-C ASE Services . . . . . . . . . . . . . . . . . 2 Mapping CPI-C to OSI TP Services . . . . . . . . . . . . . . . 2 Mapping OSI TP Services to CPI-C for Half-Duplex Conversations 2 Sequencing Rules and State Tables . . . . . . . . . . . . . . . 2 CPI-C ASE Protocol Definition . . . . . . . . . . . . . . . . . 2 CPI-C ASE Structure and Encoding of APDUs . . . . . . . . . . . 2 CPI Communications and OSI TP CRMs for Full-Duplex Conversations 2 Mapping OSI TP Services to CPI-C for Full-Duplex Conversations 2 Sequencing Rules and State Tables . . . . . . . . . . . . . . . 2 CPI-C ASE Protocol Definition . . . . . . . . . . . . . . . . . 2 CPI-C ASE Structure and Encoding of APDUs . . . . . . . . . . . 2 APPENDIX E. PSEUDONYM FILES . . . . . . . . . . . . . . . . . . 2 Application Generator Pseudonym File--as Implemented by Cross-System Product (CMCSP) . . . . . . . . . . . . . . . . . . 2 C Pseudonym File (CMC or CPIC.H) . . . . . . . . . . . . . . . . 2 COBOL Pseudonym File (CMCOBOL) . . . . . . . . . . . . . . . . . 3 FORTRAN Pseudonym File (CMFORTRN) . . . . . . . . . . . . . . . . 3 PL/I Pseudonym File (CMPLI) . . . . . . . . . . . . . . . . . . . 3 REXX Pseudonym File (CMREXX) . . . . . . . . . . . . . . . . . . 3 RPG Pseudonym File (CMRPG) . . . . . . . . . . . . . . . . . . . 3 APPENDIX F. CPI COMMUNICATIONS 2.0 CONFORMANCE CLASSES . . . . . 3 Definitions . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 Conformance Requirements . . . . . . . . . . . . . . . . . . . . 3 Multi-Threading Support . . . . . . . . . . . . . . . . . . . . 3 CPI-C 2.0 Conformance Classes . . . . . . . . . . . . . . . . . . 3 Functional Conformance Class Descriptions . . . . . . . . . . . . 3 Conversations . . . . . . . . . . . . . . . . . . . . . . . . . 3 LU 6.2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 OSI TP . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 Recoverable Transactions . . . . . . . . . . . . . . . . . . . 3 Unchained Transactions . . . . . . . . . . . . . . . . . . . . 3 Conversation-Level Non-Blocking . . . . . . . . . . . . . . . . 3 Queue-Level Non-Blocking . . . . . . . . . . . . . . . . . . . 3 Callback Function . . . . . . . . . . . . . . . . . . . . . . . 3 Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 Data Conversion Routines . . . . . . . . . . . . . . . . . . . 3 Security . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 Distributed Security . . . . . . . . . . . . . . . . . . . . . 3 Full-Duplex . . . . . . . . . . . . . . . . . . . . . . . . . . 3 Expedited Data . . . . . . . . . . . . . . . . . . . . . . . . 3 Directory . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 Secondary Information . . . . . . . . . . . . . . . . . . . . . 3 Configuration Conformance Class Description . . . . . . . . . . . 3 OSI TP Addressing Disable . . . . . . . . . . . . . . . . . . . 3 Relationship to OSI TP Functional Units and OSI TP Profiles . . . 3 Conformance Class Details . . . . . . . . . . . . . . . . . . . . 3 APPENDIX G. SAMPLE PROGRAMS . . . . . . . . . . . . . . . . . . 3 SALESRPT (Initiator of the Conversation) . . . . . . . . . . . . 3 CREDRPT (Acceptor of the Conversation) . . . . . . . . . . . . . 3 Results of Successful Program Execution . . . . . . . . . . . . . 3 APPENDIX H. CPI COMMUNICATIONS EXTENSIONS FOR USE WITH DCE DIRECTORY . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 Profile Object . . . . . . . . . . . . . . . . . . . . . . . . . 3 Server Object . . . . . . . . . . . . . . . . . . . . . . . . . . 3 Server Group Object . . . . . . . . . . . . . . . . . . . . . . . 3 Interaction of Directory Objects . . . . . . . . . . . . . . . . 3 CPI-C Name Service Interface . . . . . . . . . . . . . . . . . . 3 CNSI Calls . . . . . . . . . . . . . . . . . . . . . . . . . . 3 Definition of New Objects . . . . . . . . . . . . . . . . . . . . 3 Terminology . . . . . . . . . . . . . . . . . . . . . . . . . . 3 Profile Object . . . . . . . . . . . . . . . . . . . . . . . . 3 Server Object . . . . . . . . . . . . . . . . . . . . . . . . . 3 Server Group Object . . . . . . . . . . . . . . . . . . . . . . 3 Program Installation Object . . . . . . . . . . . . . . . . . . 3 Encoding Method for Complex Attribute Values . . . . . . . . . 3 Scenarios for Use of CNSI . . . . . . . . . . . . . . . . . . . . 3 (PFID, *, *) . . . . . . . . . . . . . . . . . . . . . . . . . 3 (PFID, SDN, *) . . . . . . . . . . . . . . . . . . . . . . . . 3 (PFID, SGDN, *) . . . . . . . . . . . . . . . . . . . . . . . . 3 (PFID, SDN, resID) . . . . . . . . . . . . . . . . . . . . . . 3 (PFID, SGDN, resID) . . . . . . . . . . . . . . . . . . . . . . 3 (PFID, PDN, *) . . . . . . . . . . . . . . . . . . . . . . . . 3 (PFID, PDN, resID) . . . . . . . . . . . . . . . . . . . . . . 3 APPENDIX I. APPLICATION MIGRATION FROM X/OPEN CPI-C TO CPI-C 2.0 3 GLOSSARY . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 INDEX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 ---------------------------------------------------------------------------------------------------------------------------------- Figures 1. Programs Using CPI Communications to Converse through a Network . . . . . . . . . . . . . . . . . . . . . . . . . . 1 2. Operating Environment of a CPI Communications Program . . . 1 2. Operating Enviroment of a CPI Communications Program . . . . 1 3. Generic Program Interaction with a Distributed Directory . . 1 4. Program Interaction with CPI Communications and a Distributed Directory . . . . . . . . . . . . . . . . . . . . . . . . . 1 5. CRM Interaction with Distributed Security Service . . . . . 1 6. A Program Using Multiple Outbound CPI Communications Conversations . . . . . . . . . . . . . . . . . . . . . . . 1 7. A Program Using Multiple Inbound CPI Communications Conversations . . . . . . . . . . . . . . . . . . . . . . . 1 8. Server Program with Both Inbound and Outbound Conversations 1 9. Data Flow in One Direction . . . . . . . . . . . . . . . . . 1 10. Data Flow in Both Directions . . . . . . . . . . . . . . . . 1 11. Using the Distributed Directory to Locate the Partner Program 1 12. The Sending Program Changes the Data Flow Direction . . . . 1 13. Validation and Confirmation of Data Reception . . . . . . . 1 14. Changing the Data Flow Direction . . . . . . . . . . . . . . 1 15. Reporting Errors . . . . . . . . . . . . . . . . . . . . . . 1 16. Error Direction and Send-Pending State . . . . . . . . . . . 1 17. Establishing a Protected Conversation and Issuing a Successful Commit . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 18. A Successful Commit with Conversation State Change . . . . . 1 19. Conversation Deallocation Precedes the Commit Call . . . . . 1 20. Accepting Multiple Conversations Using Blocking Calls . . . 1 21. Accepting Multiple Conversations Using Non-Blocking Calls . 1 22. Establishing a Full-Duplex Conversation . . . . . . . . . . 1 23. Using a Full-Duplex Conversation . . . . . . . . . . . . . . 1 24. Terminating a Full-Duplex Conversation . . . . . . . . . . . 1 25. Using Queue-Level Non-Blocking . . . . . . . . . . . . . . . 1 26. Relationship of PFID to Program Installation DNs . . . . . . 1 27. Sample Program Binding Format . . . . . . . . . . . . . . . 1 28. Interactions of Directory Objects . . . . . . . . . . . . . 3 29. CPI-C Name Service Interface (CNSI) and CPI Communications . 3 30. Program Uses CNSI to Locate PIDN . . . . . . . . . . . . . . 3 ---------------------------------------------------------------------------------------------------------------------------------- Tables 1. Versions of CPI Communications . . . . . . . . . . . . . . . 1 2. Breakdown of Calls between Starter Set and Advanced Function 1 3. Characteristics and Their Default Values--Part 1 . . . . . . 1 4. Characteristics and Their Default Values--Part 2 . . . . . . 1 5. Characteristics and Their Default Values--Part 3 . . . . . . 1 6. Characteristics and Their Default Values--Part 4 . . . . . . 1 7. Conversation Characteristic Values that Cannot Be Set for Full-Duplex Conversations . . . . . . . . . . . . . . . . . 1 8. Conversation Characteristic Values that Cannot Be Set for Half-Duplex Conversations . . . . . . . . . . . . . . . . . 1 9. Conversation Queues - Associated Calls and Send-Receive Modes 1 10. Calls Returning CM_OPERATION_INCOMPLETE . . . . . . . . . . 1 11. Incompatible conversation_security_type and required_user_name_type Values . . . . . . . . . . . . . . . 1 12. Possible Take-Commit Notifications for Half-Duplex Conversations . . . . . . . . . . . . . . . . . . . . . . . 1 13. Possible Take-Commit Notifications for Full-Duplex Conversations . . . . . . . . . . . . . . . . . . . . . . . 1 14. Responses to Take-Commit and Take-Backout Notifications . . 1 15. Responses to the CM_JOIN_TRANSACTION Indication . . . . . . 1 16. CPI Communications States for Protected Conversations . . . 1 17. List of CPI-C Calls and Their Descriptions . . . . . . . . . 1 18. Full-Duplex and Half-Duplex Conversation Queues . . . . . . 1 19. Variables/Characteristics and Their Possible Values . . . . 1 20. Character Sets T61String, 01134, and 00640 . . . . . . . . . 1 21. Variable Types and Lengths . . . . . . . . . . . . . . . . . 1 22. Fields in the Program Binding . . . . . . . . . . . . . . . 1 23. Secondary Information Types and Associated Return Codes . . 2 24. Range of Condition Codes for Different Secondary Information Types . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 25. CPI Communications-Defined Secondary Information . . . . . . 2 26. Examples of LU 6.2 CRM-Specific Secondary Information . . . 2 27. Examples of OSI TP CRM-Specific Secondary Information . . . 2 28. Examples of Implementation-Related Secondary Information . . 2 29. States and Transitions for CPI Communications Calls on Half-Duplex Conversations . . . . . . . . . . . . . . . . . 2 30. States and Transitions for Protected Half-Duplex Conversations (CPIRR) . . . . . . . . . . . . . . . . . . . . . . . . . . 2 31. States and Transitions for Protected Half-Duplex Conversations (X/Open TX) . . . . . . . . . . . . . . . . . . . . . . . . 2 32. States and Transitions for CPI Communications Calls on Full-Duplex Conversations . . . . . . . . . . . . . . . . . 2 33. States and Transitions for Protected Full-Duplex Conversations (CPIRR) . . . . . . . . . . . . . . . . . . . . . . . . . . 2 34. States and Transitions for Protected Full-Duplex Conversations (X/Open TX) . . . . . . . . . . . . . . . . . . . . . . . . 2 35. Relationship of LU 6.2 Verbs to CPI Communications Calls (Part 1) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 36. Relationship of LU 6.2 Verbs to CPI Communications Calls (Part 2) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 37. Relationship of LU 6.2 Verbs to CPI Communications Calls (Part 3) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 38. Relationship of LU 6.2 Verbs to CPI Communications Calls (Part 4) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 39. Relationship of LU 6.2 Verbs to CPI Communications Calls (Part 5) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 40. Relationship of LU 6.2 Verbs to CPI Communications Calls (Part 6) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 41. Mapping CPI-C Calls to OSI TP Services . . . . . . . . . . . 2 42. CMALLC - Allocate Mapping . . . . . . . . . . . . . . . . . 2 43. CMCANC - Cancel_Conversation Mapping . . . . . . . . . . . . 2 44. CMCFM - Confirm Mapping . . . . . . . . . . . . . . . . . . 2 45. CMCFMD - Confirmed Mapping . . . . . . . . . . . . . . . . . 2 46. CMDEAL - Deallocate Mapping . . . . . . . . . . . . . . . . 2 47. CMDFDE - Deferred_Deallocate Mapping . . . . . . . . . . . . 2 48. CMFLUS - Flush . . . . . . . . . . . . . . . . . . . . . . . 2 49. CMINCL - Include_Partner_In_Transaction Mapping . . . . . . 2 50. CMPREP - Prepare Mapping . . . . . . . . . . . . . . . . . . 2 51. CMPTR - Prepare_To_Receive Mapping . . . . . . . . . . . . . 2 52. CMRTS - Request_To_Send Mapping . . . . . . . . . . . . . . 2 53. CMRCV - Receive . . . . . . . . . . . . . . . . . . . . . . 2 54. CMSEND - Send_Data Mapping . . . . . . . . . . . . . . . . . 2 55. CMSERR - Send_Error Mapping . . . . . . . . . . . . . . . . 2 56. Mapping OSI TP Services to CPI-C Calls, Parameters, and Conversation Characteristics . . . . . . . . . . . . . . . . 2 57. TP-BEGIN-DIALOGUE indication Mapping . . . . . . . . . . . . 2 58. TP-BEGIN-DIALOGUE confirm Mapping . . . . . . . . . . . . . 2 59. TP-END-DIALOGUE indication Mapping . . . . . . . . . . . . . 2 60. TP-U-ABORT indication Mapping . . . . . . . . . . . . . . . 2 61. TP-P-ABORT indication Mapping . . . . . . . . . . . . . . . 2 62. TP-DEFERRED-END-DIALOGUE, TP-DEFERRED-GRANT-CONTROL, and TP-PREPARE indication Mapping . . . . . . . . . . . . . . . 2 63. Mapping CPI-C Calls on Full-Duplex Conversations to OSI TP Services . . . . . . . . . . . . . . . . . . . . . . . . . . 2 64. CMALLC - Allocate Mapping . . . . . . . . . . . . . . . . . 2 65. CMCANC - Cancel_Conversation Mapping . . . . . . . . . . . . 2 66. CMCFMD - Confirmed Mapping . . . . . . . . . . . . . . . . . 2 67. CMDEAL - Deallocate Mapping . . . . . . . . . . . . . . . . 2 68. CMDFDE - Deferred_Deallocate Mapping . . . . . . . . . . . . 2 69. CMINCL - Include_Partner_In_Transaction Mapping . . . . . . 2 70. CMPREP - Prepare Mapping . . . . . . . . . . . . . . . . . . 2 71. CMRCV - Receive . . . . . . . . . . . . . . . . . . . . . . 2 72. CMSEND - Send_Data Mapping . . . . . . . . . . . . . . . . . 2 73. CMSERR - Send_Error Mapping . . . . . . . . . . . . . . . . 2 74. Mapping OSI TP Services to CPI-C Calls, Parameters, and Conversation Characteristics . . . . . . . . . . . . . . . . 2 75. TP-BEGIN-DIALOGUE indication Mapping . . . . . . . . . . . . 2 76. TP-BEGIN-DIALOGUE confirm Mapping . . . . . . . . . . . . . 2 77. TP-END-DIALOGUE indication Mapping . . . . . . . . . . . . . 2 78. TP-U-ABORT indication Mapping . . . . . . . . . . . . . . . 2 79. TP-P-ABORT indication Mapping . . . . . . . . . . . . . . . 2 80. TP-DEFERRED-END-DIALOGUE and TP-PREPARE indication Mapping . 2 81. OSI TP Service Functional Units and Corresponding Conformance Classes . . . . . . . . . . . . . . . . . . . . . . . . . . 3 82. OSI TP Profiles and Corresponding Conformance Classes . . . 3 83. Conformance Class Requirements -- Calls . . . . . . . . . . 3 84. Conformance Class Requirements -- Characteristics, Variables, and Values . . . . . . . . . . . . . . . . . . . . . . . . . 3 85. Sample Calls for CNSI . . . . . . . . . . . . . . . . . . . 3 86. Fields in Complex Attributes . . . . . . . . . . . . . . . . 3 87. Parameter Type Differences . . . . . . . . . . . . . . . . . 3 ---------------------------------------------------------------------------------------------------------------------------------- Notices References in this publication to IBM products, programs, or services do not imply that IBM intends to make them available in all countries in which IBM operates. Any reference to an IBM product, program, or service is not intended to state or imply that only that IBM program, product, or service may be used. The evaluation and verification of operation in conjunction with other products, except those expressly designated by IBM, are the responsibility of the user. IBM authorizes any developer, under IBM's copyrights, to use and reproduce the materials in this publication ("Materials"): to implement CPI Communications in the developer's products and to describe the interface in supporting publications for those products. X/Open has authorized any developer to do the same with respect to any Materials in this publication in which X/Open holds the copyright. The developer, in consideration of the foregoing authorization, and IBM agree not to assert any copyrights in any derivative works of the Materials against each other or any third party. No authorization or right is granted by IBM either directly or by implication, estoppel, or otherwise other than as explicitly stated above, or under any other intellectual property right of IBM including but not limited to trade secrets, trademarks, patents, or patent applications of IBM. The following paragraph does not apply to the United Kingdom or any country, province, or state where such provisions are inconsistent with local law: INTERNATIONAL BUSINESS MACHINES CORPORATION PROVIDES THIS DOCUMENTATION ON AN "AS IS" BASIS WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. Some states, provinces, and countries do not allow the exclusion of expressed or implied warranties in certain transactions; therefore, the above exclusion may not apply to you. ---------------------------- Trademarks and Service Marks The following terms, denoted by an asterisk (*) on their first occurrence in this publication, are trademarks or service marks of the IBM Corporation in the United States and/or other countries: APPN Advanced Peer-to-Peer Networking BookManager IBM Library Reader SAA Systems Application Architecture The following terms, denoted by a double asterisk (**) on the first occurrence in this publication, are trademarks of other companies: Trademark Owned by DCE Open Software Foundation Windows Microsoft Corporation NDS Novell Corporation ---------------------------------------------------------------------------------------------------------------------------------- Acknowledgements IBM is publishing this manual, which documents CPI-C 2.0, on behalf of the CPI-C Implementers' Workshop (CIW). The CIW is an open forum of CPI-C implementers and users, including as active participants many leading suppliers of information systems and software. Its goals are to enhance the CPI-C architecture, to promote the implementation and use of CPI-C, and to move CPI-C towards standardization. The CIW maintains the CPI-C architecture and defines extensions to meet new requirements. The extensions for CPI-C 2.0, the latest version of CPI-C, were defined by the CIW. ---------------------------------------------------------------------------------------------------------------------------------- Chapter 1. Introduction This introductory chapter: o Identifies the purpose, structure, and audience of this book o Lists what is new in this book o Explains how to use this book o Details the availability of this book on CD-ROM o Explains the naming conventions followed o Gives a brief overview and history of the Common Programming Interface (CPI) for Communications o Outlines the major features of each level of CPI-C architecture ------------------------- Who Should Read This Book CPI COMMUNICATIONS (CPI-C) provides a cross-system-consistent and easy-to-use programming interface for applications that require program-to-program communication. This book defines CPI Communications. It is intended for programmers who want to write applications that adhere to this definition, as well as for implementers interested in implementing CPI Communications. Although this book is designed as an architecture specification, Chapter 3, "Program-to-Program Communication Tutorial" provides a tutorial on designing application programs using CPI Communications concepts and calls. ------------------------ What is New in This Book This book has been changed in support of: o Queue-level processing and multi-threading support o Queue-level non-blocking o OSI TP use o Full-duplex conversations and expedited data o Distributed directory use o Distributed security use (for LU 6.2 and OSI TP) o Secondary information o CPI-C 2.0 conformance classes o Application migration from X/Open CPI-C to CPI-C 2.0 ------------- Softcopy Book This publication is also available as a softcopy book. The softcopy book is on an electronic bookshelf and is part of both the IBM Networking Systems Softcopy Collection Kit (SK2T-6012) and The Best of APPC, APPN, and CPI-C (SK2T-2013) on compact disk read-only memory (CD-ROM). You can view and search softcopy books by using BookManager* READ products or by using the IBM Library Reader* product included on each CD-ROM. For more information on CD-ROMs and softcopy books, see IBM Online Libraries: Softcopy Collection Kit User's Guide (GC28-1700) and BookManager READ documentation. -------------------- How to Use This Book In addition to this introductory chapter, the book contains the following sections: o CHAPTER 2, "CPI COMMUNICATIONS TERMS AND CONCEPTS" This chapter describes basic terms and concepts used in CPI Communications. o CHAPTER 3, "PROGRAM-TO-PROGRAM COMMUNICATION TUTORIAL" This chapter provides a number of sample flows that show how a program can use CPI Communications calls for program-to-program communication. o CHAPTER 4, "CALL REFERENCE SECTION" This chapter describes the format and function of each of the CPI Communications calls. o APPENDIX A, "VARIABLES AND CHARACTERISTICS" This appendix describes the CPI Communications variables and conversation characteristics. o APPENDIX B, "RETURN CODES AND SECONDARY INFORMATION" This appendix describes the return codes that may be returned when CPI Communications calls are executed. o APPENDIX C, "STATE TABLES" This appendix explains when the CPI Communications calls can be issued. o APPENDIX D, "MAPPING CPI COMMUNICATIONS TO LU 6.2 AND OSI TP CRMS" This appendix provides a mapping of CPI Communications to the services provided by the LU 6.2 and OSI TP communication resource managers. o APPENDIX E, "PSEUDONYM FILES" This appendix contains sample CPI Communications pseudonym files for several programming languages. o APPENDIX F, "CPI COMMUNICATIONS 2.0 CONFORMANCE CLASSES" This appendix defines the CPI Communications 2.0 conformance classes. o APPENDIX G, "SAMPLE PROGRAMS" This appendix contains two sample COBOL programs using CPI Communications. o APPENDIX H, "CPI COMMUNICATIONS EXTENSIONS FOR USE WITH DCE DIRECTORY" This appendix describes CPI Communications extensions in two areas: (1) the addition of three directory objects and (2) an interface for interaction with the objects. o APPENDIX I, "APPLICATION MIGRATION FROM X/OPEN CPI-C TO CPI-C 2.0" This appendix describes the application migration from X/Open CPI-C (as defined in the X/Open Developers' Specification CPI-C) to CPI-C 2.0. General Path through This Book This book contains both tutorial and reference information. Use the following path to achieve the most benefit: o Read Chapter 2, "CPI Communications Terms and Concepts" for an overview of the terms and concepts used in CPI Communications. It is required to understand the sample program flows shown in Chapter 3, "Program-to-Program Communication Tutorial." o Read Chapter 3, "Program-to-Program Communication Tutorial" for an explanation and examples of how to use the CPI Communications calls. When reading this chapter, use Chapter 4, "Call Reference Section" to obtain additional information about the function of and required parameters for the CPI Communications calls. o Use Chapter 4, "Call Reference Section" and the appendices for specific functional information on how to code applications. ----------------------------------------------------------------- Naming Conventions--Calls, Characteristics, Variables, and Values Pseudonyms for the actual calls, characteristics, variables, states, and characteristic values that make up CPI Communications are used throughout this book to enhance understanding and readability. Where possible, underscores (_) and complete names are used in the pseudonyms. Any phrase in the book that contains an underscore is a pseudonym. For example, Send_Data is the pseudonym for the program call CMSEND, which is used by a program to send information to its conversation partner. This book uses the following conventions to aid in distinguishing between the four types of pseudonyms: o CALLS are shown in all capital letters. Each underscore-separated portion of a call's pseudonym begins with a capital letter. For example, Accept_Conversation is the pseudonym for the actual call name CMACCP. o CHARACTERISTICS and VARIABLES used to hold the values of characteristics are in italics (for example, conversation_type) and contain no capital letters except those used for abbreviations (for example, TP_name). In most cases, the parameter used on a call, which corresponds to a program variable, has the same name as the conversation characteristic. Whether a name refers to a parameter, a program variable, or a characteristic is determined by context. In all cases, the value used for the three remains the same. o VALUES used for characteristics and variables appear in all uppercase letters (such as CM_OK) and represent actual integer values that will be placed into the variable. For a list of the integer values that are placed in the variables, see Table 19 in Appendix A, "Variables and Characteristics." o STATES are used to determine the next set of actions that can be taken in a conversation. States begin with capital letters and appear in bold type, such as RESET state. Bold is also used to denote the BACKOUT-REQUIRED condition. o QUEUES are used to group related CPI Communications calls. Queue names begin with capital letters. The parts of a queue name are connected with a hyphen. As a complete example of how pseudonyms are used in this book, suppose a program uses the Set_Return_Control call to set the conversation characteristic of return_control to a value of CM_IMMEDIATE. o Chapter 4, "Call Reference Section" contains the syntax and semantics of the variables used for the call. It explains that the real name of the program call for Set_Return_Control is CMSRC and that CMSRC has a parameter list of conversation_ID, return_control, and return_code. o Appendix A, "Variables and Characteristics" provides a complete description of all variables used in the book and shows that the return_control variable, which goes into the Set_Return_Control call as a parameter, is a 32-bit integer. This information is provided in Table 21. o Table 19 in Appendix A, "Variables and Characteristics" shows that CM_IMMEDIATE is defined as having an integer value of 1. CM_IMMEDIATE is placed into the return_control parameter on the call to CMSRC. o Finally, the return_code value CM_OK, which is returned to the program on the CMSRC call, is defined in Appendix B, "Return Codes and Secondary Information." CM_OK means that the call completed successfully. NOTES: 1. Pseudonym value names are not actually passed to CPI Communications as a string of characters. Instead, the pseudonyms represent integer values that are passed on the program calls. The pseudonym value names are used to aid readability of the text. Similarly, programs should use translates and equates (depending on the language) to aid the readability of the code. In the above example, for instance, a program equate could be used to define CM_IMMEDIATE as meaning an integer value of 1. The actual program code would then read as described above--namely, that return_control is replaced with CM_IMMEDIATE. The end result, however, is that an integer value of 1 is placed into the variable. 2. Section "Programming Language Considerations" in Chapter 4, "Call Reference Section" provides information on system files that can be used to establish pseudonyms for a program. ----------------------------- History of CPI Communications CPI Communications is an evolving interface, embracing functions to meet the growing demands from different application environments and to achieve openness as an industry standard for communications programming. To date, there have been five versions of the interface: o CPI Communications as it was first introduced in 1987: CPI-C 1.0 o Extensions made to CPI-C 1.0 by IBM: CPI-C 1.1 o Extensions made to CPI-C 1.1 by X/Open: X/OPEN CPI-C o CPI Communications extensions made by IBM to CPI-C 1.1 to support X/Open CPI-C: CPI-C 1.2 o CPI Communications extensions made to CPI-C 1.2 by the CPI-C Implementers' Workshop (CIW): CPI-C 2.0 This manual documents CPI-C 2.0. CPI-C and the Conversational Model The conversational model of program-to-program communications is commonly used in the industry today, and a wide variety of applications are based on this model. The model is historically thought of in terms of two applications "speaking" and "listening," hence the term "conversation." A conversation is simply a logical connection between two programs that allows the programs to communicate with each other. From an application's perspective, CPI-C provides the function necessary to enable this communication. The conversational model is implemented in two major communications protocols, Advanced Program-to-Program Communications (APPC) and Open Systems Interconnection Distributed Transaction Processing (OSI TP).(1) The APPC model is also referred to as logical unit type 6.2 (LU 6.2). CPI-C 2.0 provides access to both communications protocols. A primary benefit of this design is that CPI Communications defines a single programming interface to the underlying network protocols across many different programming languages and environments. The interface's rich set of programming services shields the program from details of system connectivity and eases the integration and porting of the application programs across the supported environments. Relationship to Products CPI Communications defines a programming interface that is available across a wide variety of systems. Preparing and running programs requires the use of a CPI Communications product that implements the interface on one of these systems. These products have their own sets of product documentation, which will be required in addition to this book. --------------------------------------- Functional Levels of CPI Communications The following sections list the major features of each level of the CPI Communications architecture. CPI-C 1.0 The initial specification of CPI Communications provided a standard base for conversational communications: o Ability to start and end conversations o Support for program synchronization through confirmation flows o Error processing o Ability to optimize conversation flow (using Flush and Prepare_To_Receive calls) CPI-C 1.1 CPI-C 1.0 was extended in 1990 to include four areas of new function: o Support for resource recovery o Automatic parameter conversion o Support for communication with non-CPI-C programs o Local/remote transparency NOTE: For more information about the CPI-C 1.1 architecture, see the seventh edition of SAA Common Programming Interface Communications Reference, SC26-4399-06. X/Open CPI-C X/Open adopted CPI-C at the 1.1 level (with the exception of support for resource recovery) to allow X/Open-compliant systems to communicate with systems implementing LU 6.2. The X/Open Developer's Specification CPI-C, published in 1990, included several new functions not found in CPI-C 1.1: o Support for non-blocking calls o Support for data conversion (beyond parameters) o Support for security parameters o Ability to accept multiple conversations CPI-C 1.2 CPI-C 1.0 was designed to provide a consistent programming interface for communications programming. Unfortunately, each of its derivatives, namely CPI-C 1.1 and X/Open CPI-C, provided different levels of function. CPI-C 1.2, documented in the SC31-6180-00 version of this specification, consolidated CPI-C 1.1 and the X/Open extensions, providing function in four areas: o Support for non-blocking calls--incorporation of X/Open calls o Support for data conversion--incorporation of X/Open calls o Support for specification of security parameters--incorporation of X/Open calls o Ability to accept multiple conversations--new calls to accommodate both X/Open and CPI-C 1.1 CPI-C 2.0 CPI-C 2.0 provides enhancements to some CPI-C 1.2 functions, as well as offering several new functions: o Support for full-duplex conversations and expedited data o Enhanced support for non-blocking processing with the addition of queue-level processing and a callback function o Support for OSI TP applications o Support for use of a distributed directory o Support for use of a distributed security service o Support for secondary information to determine the cause of a return code o Definition of conformance classes Call Table Table 1 lists the calls defined for the different versions of CPI Communications. An X is used to indicate that the call was part of a specific version. +--------------------------------------------------------------------------------------------------------------------------------+ | Table 1. Versions of CPI Communications | +----------------------------------------------------+--------------+---------------+--------------+--------------+--------------+ | CALL NAME | CPI-C 1.0 | CPI-C 1.1 | X/OPEN CPI-C | CPI-C 1.2 | CPI-C 2.0 | +----------------------------------------------------+--------------+---------------+--------------+--------------+--------------+ | | | | | | | +----------------------------------------------------+--------------+---------------+--------------+--------------+--------------+ | STARTER SET | | | | | | +----------------------------------------------------+--------------+---------------+--------------+--------------+--------------+ | Accept_Conversation | X | X | X | X | X | +----------------------------------------------------+--------------+---------------+--------------+--------------+--------------+ | Allocate | X | X | X | X | X | +----------------------------------------------------+--------------+---------------+--------------+--------------+--------------+ | Deallocate | X | X | X | X | X | +----------------------------------------------------+--------------+---------------+--------------+--------------+--------------+ | Initialize_Conversation | X | X | X | X | X | +----------------------------------------------------+--------------+---------------+--------------+--------------+--------------+ | Receive | X | X | X | X | X | +----------------------------------------------------+--------------+---------------+--------------+--------------+--------------+ | Send_Data | X | X | X | X | X | +----------------------------------------------------+--------------+---------------+--------------+--------------+--------------+ | | | | | | | +----------------------------------------------------+--------------+---------------+--------------+--------------+--------------+ | ADVANCED FUNCTION | | | | | | +----------------------------------------------------+--------------+---------------+--------------+--------------+--------------+ | | | | | | | +----------------------------------------------------+--------------+---------------+--------------+--------------+--------------+ | FOR SYNCHRONIZATION AND CONTROL: | | | | | | +----------------------------------------------------+--------------+---------------+--------------+--------------+--------------+ | Confirm | X | X | X | X | X | +----------------------------------------------------+--------------+---------------+--------------+--------------+--------------+ | Confirmed | X | X | X | X | X | +----------------------------------------------------+--------------+---------------+--------------+--------------+--------------+ | Deferred_Deallocate | | | | | X | +----------------------------------------------------+--------------+---------------+--------------+--------------+--------------+ | Flush | X | X | X | X | X | +----------------------------------------------------+--------------+---------------+--------------+--------------+--------------+ | Include_Partner_In_Transaction | | | | | X | +----------------------------------------------------+--------------+---------------+--------------+--------------+--------------+ | Prepare | | | | | X | +----------------------------------------------------+--------------+---------------+--------------+--------------+--------------+ | Prepare_To_Receive | X | X | X | X | X | +----------------------------------------------------+--------------+---------------+--------------+--------------+--------------+ | Receive_Expedited_Data | | | | | X | +----------------------------------------------------+--------------+---------------+--------------+--------------+--------------+ | Request_To_Send | X | X | X | X | X | +----------------------------------------------------+--------------+---------------+--------------+--------------+--------------+ | Send_Error | X | X | X | X | X | +----------------------------------------------------+--------------+---------------+--------------+--------------+--------------+ | Send_Expedited_Data | | | | | X | +----------------------------------------------------+--------------+---------------+--------------+--------------+--------------+ | Test_Request_To_Send_Received | X | X | X | X | X | +----------------------------------------------------+--------------+---------------+--------------+--------------+--------------+ | | | | | | | +----------------------------------------------------+--------------+---------------+--------------+--------------+--------------+ | FOR MODIFYING CONVERSATION | | | | | | | CHARACTERISTICS: | | | | | | +----------------------------------------------------+--------------+---------------+--------------+--------------+--------------+ | Set_AE_Qualifier | | | | | X | +----------------------------------------------------+--------------+---------------+--------------+--------------+--------------+ | Set_Allocate_Confirm | | | | | X | +----------------------------------------------------+--------------+---------------+--------------+--------------+--------------+ | Set_AP_Title | | | | | X | +----------------------------------------------------+--------------+---------------+--------------+--------------+--------------+ | Set_Application_Context_Name | | | | | X | +----------------------------------------------------+--------------+---------------+--------------+--------------+--------------+ | Set_Begin_Transaction | | | | | X | +----------------------------------------------------+--------------+---------------+--------------+--------------+--------------+ | Set_Confirmation_Urgency | | | | | X | +----------------------------------------------------+--------------+---------------+--------------+--------------+--------------+ | Set_Conversation_Security_Password | | | X | X | X | +----------------------------------------------------+--------------+---------------+--------------+--------------+--------------+ | Set_Conversation_Security_Type | | | X | X | X | +----------------------------------------------------+--------------+---------------+--------------+--------------+--------------+ | Set_Conversation_Security_User_ID | | | X | X | X | +----------------------------------------------------+--------------+---------------+--------------+--------------+--------------+ | Set_Conversation_Type | X | X | X | X | X | +----------------------------------------------------+--------------+---------------+--------------+--------------+--------------+ | Set_Deallocate_Type | X | X | X | X | X | +----------------------------------------------------+--------------+---------------+--------------+--------------+--------------+ | Set_Error_Direction | X | X | X | X | X | +----------------------------------------------------+--------------+---------------+--------------+--------------+--------------+ | Set_Fill | X | X | X | X | X | +----------------------------------------------------+--------------+---------------+--------------+--------------+--------------+ | Set_Initialization_Data | | | | | X | +----------------------------------------------------+--------------+---------------+--------------+--------------+--------------+ | Set_Log_Data | X | X | X | X | X | +----------------------------------------------------+--------------+---------------+--------------+--------------+--------------+ | Set_Mode_Name | X | X | X | X | X | +----------------------------------------------------+--------------+---------------+--------------+--------------+--------------+ | Set_Partner_ID | | | | | X | +----------------------------------------------------+--------------+---------------+--------------+--------------+--------------+ | Set_Partner_LU_Name | X | X | X | X | X | +----------------------------------------------------+--------------+---------------+--------------+--------------+--------------+ | Set_Prepare_Data_Permitted | | | | | X | +----------------------------------------------------+--------------+---------------+--------------+--------------+--------------+ | Set_Prepare_To_Receive_Type | X | X | X | X | X | +----------------------------------------------------+--------------+---------------+--------------+--------------+--------------+ | Set_Receive_Type | X | X | X | X | X | +----------------------------------------------------+--------------+---------------+--------------+--------------+--------------+ | Set_Return_Control | X | X | X | X | X | +----------------------------------------------------+--------------+---------------+--------------+--------------+--------------+ | | | | | | | +----------------------------------------------------+--------------+---------------+--------------+--------------+--------------+ | Set_Send_Receive_Mode | | | | | X | +----------------------------------------------------+--------------+---------------+--------------+--------------+--------------+ | Set_Send_Type | X | X | X | X | X | +----------------------------------------------------+--------------+---------------+--------------+--------------+--------------+ | Set_Sync_Level | | | | | | +----------------------------------------------------+--------------+---------------+--------------+--------------+--------------+ | CM_NONE | X | X | X | X | X | +----------------------------------------------------+--------------+---------------+--------------+--------------+--------------+ | CM_CONFIRM | X | X | X | X | X | +----------------------------------------------------+--------------+---------------+--------------+--------------+--------------+ | CM_SYNC_POINT | | X | | X | X | +----------------------------------------------------+--------------+---------------+--------------+--------------+--------------+ | CM_SYNC_POINT_NO_CONFIRM | | | | | X | +----------------------------------------------------+--------------+---------------+--------------+--------------+--------------+ | Set_TP_Name | X | X | X | X | X | +----------------------------------------------------+--------------+---------------+--------------+--------------+--------------+ | Set_Transaction_Control | | | | | X | +----------------------------------------------------+--------------+---------------+--------------+--------------+--------------+ | | | | | | | +----------------------------------------------------+--------------+---------------+--------------+--------------+--------------+ | FOR EXAMINING INFORMATION ABOUT | | | | | | | THE CONVERSATION AND CRM: | | | | | | +----------------------------------------------------+--------------+---------------+--------------+--------------+--------------+ | Extract_AE_Qualifier | | | | | X | +----------------------------------------------------+--------------+---------------+--------------+--------------+--------------+ | Extract_AP_Title | | | | | X | +----------------------------------------------------+--------------+---------------+--------------+--------------+--------------+ | Extract_Application_Context_Name | | | | | X | +----------------------------------------------------+--------------+---------------+--------------+--------------+--------------+ | Extract_Conversation_Context | | | | X | X | +----------------------------------------------------+--------------+---------------+--------------+--------------+--------------+ | Extract_Conversation_State | | X | | X | X | +----------------------------------------------------+--------------+---------------+--------------+--------------+--------------+ | Extract_Conversation_Type | X | X | X | X | X | +----------------------------------------------------+--------------+---------------+--------------+--------------+--------------+ | Extract_Initialization_Data | | | | | X | +----------------------------------------------------+--------------+---------------+--------------+--------------+--------------+ | Extract_Maximum_Buffer_Size | | | | X | X | +----------------------------------------------------+--------------+---------------+--------------+--------------+--------------+ | Extract_Mode_Name | X | X | X | X | X | +----------------------------------------------------+--------------+---------------+--------------+--------------+--------------+ +----------------------------------------------------+--------------+---------------+--------------+--------------+--------------+ | Extract_Partner_ID | | | | | X | +----------------------------------------------------+--------------+---------------+--------------+--------------+--------------+ | Extract_Partner_LU_Name | X | X | X | X | X | +----------------------------------------------------+--------------+---------------+--------------+--------------+--------------+ | Extract_Secondary_Information | | | | | X | +----------------------------------------------------+--------------+---------------+--------------+--------------+--------------+ | Extract_Security_User_ID | | | -(2) | X | X | +----------------------------------------------------+--------------+---------------+--------------+--------------+--------------+ | Extract_Send_Receive_Mode | | | | | X | +----------------------------------------------------+--------------+---------------+--------------+--------------+--------------+ | Extract_Sync_Level | X | X | X | X | X | +----------------------------------------------------+--------------+---------------+--------------+--------------+--------------+ | Extract_TP_Name | | | X | X | X | +----------------------------------------------------+--------------+---------------+--------------+--------------+--------------+ | Extract_Transaction_Control | | | | | X | +----------------------------------------------------+--------------+---------------+--------------+--------------+--------------+ | | | | | | | +----------------------------------------------------+--------------+---------------+--------------+--------------+--------------+ | FOR NON-BLOCKING OPERATIONS: | | | | | | +----------------------------------------------------+--------------+---------------+--------------+--------------+--------------+ | Cancel_Conversation | | | X | X | X | +----------------------------------------------------+--------------+---------------+--------------+--------------+--------------+ | Set_Processing_Mode | | | X | X | X | +----------------------------------------------------+--------------+---------------+--------------+--------------+--------------+ | Set_Queue_Callback_Function | | | | | X | +----------------------------------------------------+--------------+---------------+--------------+--------------+--------------+ | Set_Queue_Processing_Mode | | | | | X | +----------------------------------------------------+--------------+---------------+--------------+--------------+--------------+ | Wait_For_Completion | | | | | X | +----------------------------------------------------+--------------+---------------+--------------+--------------+--------------+ | Wait_For_Conversation | | | X | X | X | +----------------------------------------------------+--------------+---------------+--------------+--------------+--------------+ | | | | | | | +----------------------------------------------------+--------------+---------------+--------------+--------------+--------------+ | FOR ACCEPTING MULTIPLE | | | | | | | CONVERSATIONS: | | | | | | +----------------------------------------------------+--------------+---------------+--------------+--------------+--------------+ | Accept_Incoming | | | | X | X | +----------------------------------------------------+--------------+---------------+--------------+--------------+--------------+ | Initialize_For_Incoming | | | | X | X | +----------------------------------------------------+--------------+---------------+--------------+--------------+--------------+ | Release_Local_TP_Name | | | | X | X | +----------------------------------------------------+--------------+---------------+--------------+--------------+--------------+ | Specify_Local_TP_Name | | | X | X | X | +----------------------------------------------------+--------------+---------------+--------------+--------------+--------------+ | | | | | | | +----------------------------------------------------+--------------+---------------+--------------+--------------+--------------+ | FOR DATA CONVERSION: | | | | | | +----------------------------------------------------+--------------+---------------+--------------+--------------+--------------+ | Convert_Incoming | | | X | X | X | +----------------------------------------------------+--------------+---------------+--------------+--------------+--------------+ | Convert_Outgoing | | | X | X | X | +----------------------------------------------------+--------------+---------------+--------------+--------------+--------------+ | | | | | | | +----------------------------------------------------+--------------+---------------+--------------+--------------+--------------+ | | | | | | | +----------------------------------------------------+--------------+---------------+--------------+--------------+--------------+ ---------------------------------------------------------------------------------------------------------------------------------- Chapter 2. CPI Communications Terms and Concepts CPI Communications provides a consistent application programming interface for applications that require program-to-program communication. The interface provides access to a rich set of interprogram services, including: o Sending and receiving data o Synchronizing processing between programs o Notifying a partner of errors in the communication This chapter describes the major terms and concepts used in CPI Communications. ------------------------------ Communication across a Network Figure 1 illustrates the logical view of a sample network. It consists of three COMMUNICATION RESOURCE MANAGERS(3) (CRMs): CRM X, CRM Y, and CRM Z. Each CRM has two LOGICAL CONNECTIONS with two other CRMs; the logical connections are shown as the gray portions of Figure 1 and enable communication between the CRMs. The network shown in Figure 1 is a simple one. In a real network, the number of CRMs and logical connections between the CRMs can be in the thousands. +-----------+ +-----------+ | Program A | | Program B | +-----------+ +-----------+ | | <--------- Conversation (single line between two programs) +--|----------------|--+ | | CPI | | | | Communications | | +----+--|----------------|--+------------------------------------------------------------+ | | | CRM X | | Network | | | | | | | | +--|----------------|--+ | | ||| ||| | | ||| ||| | | ||| ||| | | ||| ||| | | ||| ||| Logical Connection (shaded area) | | ||| ||+--------------------------------------------------------+ | | ||| |+--------------------------------------------------------+| | | ||| +--------------------------------------------------------+|| | | ||| ||| | | ||| ||| | | ||| ||| | | ||| Logical Connection ||| | | ||+------------------+ ||| | | |+------------------+| ||| | | +------------------+|| ||| | | ||| ||| | | ||| ||| | | ||| ||| | | ||| ||| | | ||| +----------------------+ ||| | | ||| | Logical Connection | ||| | | ||| | +------------------+ | ||| | | +--|-------------------+ +-------------------|--+ | | | | CRM Y | | CRM Z | | | | | | | | | | | +-----------------------+--|-------------------+--------------+-------------------|--|---+ | | CPI | | Product-Specific| | | | Communications | | Interface | | +--|-------------------+ +-------------------|--+ Conversation ---------> | Conversation ---------> | with Program A +-----------+ with Program B +-----------+ | Program C | | Program D | +-----------+ +-----------+ Figure 1. Programs Using CPI Communications to Converse through a Network The CRMs and the logical connections shown in Figure 1 are generic representations of real networks. If this were an SNA network, the CRMs would be referred to as LOGICAL UNITS of type 6.2 and the logical connections would be SESSIONS. In an OSI network, CRMs are called APPLICATION-ENTITIES and the logical connections are ASSOCIATIONS. The physical network, which consists of nodes (processors) and data links between nodes, is not shown in Figure 1 because a program using CPI Communications does not "see" these resources. A program uses the logical network of CRMs, which in turn communicates with and uses the physical network. The CRMs discussed in this manual are of type LU 6.2 or type OSI TP. ------------------ Conversation Types Just as two CRMs communicate using a logical connection, two programs exchange data using a CONVERSATION. For example, the conversation between Program A and Program C is shown in Figure 1 as a single bold line between the two programs. The line indicating the conversation is shown on top of the logical connection because a conversation allows programs to communicate "over" the logical connection between the CRMs. CPI Communications supports two types of conversations: o MAPPED conversations allow programs to exchange arbitrary DATA RECORDS in data formats agreed upon by the application programmers. o BASIC conversations allow programs to exchange data in a standardized format. This format is a stream of data containing 2-byte logical length fields (referred to as LLs) that specify the amount of data to follow before the next length field. The typical data pattern is "LL, data, LL, data." Each grouping of "LL, data" is referred to as a LOGICAL RECORD. NOTES: 1. Because of the detailed manipulation of data and resulting complexity of error conditions, the use of basic conversations is intended for programmers using advanced functions. A more complete discussion of basic and mapped conversations is provided in the "Usage Notes" section of "Send_Data (CMSEND)." 2. Because OSI TP CRMs do not exchange the conversation characteristic that determines whether a conversation will be mapped or basic, the remote application must also issue a Set_Conversation_Type call when basic conversations are being used, to override the default value of CM_MAPPED_CONVERSATION for the conversation_type conversation characteristic. For further information on basic and mapped conversations, refer to SNA LU 6.2 Reference: Peer Protocols (SC31-6808) and SNA Transaction Programmer's Reference Manual for LU Type 6.2 (GC30-3084). ------------------ Send-Receive Modes CPI Communications supports two modes for sending and receiving data on a conversation: o HALF-DUPLEX--Only one of the programs has SEND CONTROL, the right to send data, at any time. Send control must be transferred to the other program before that program can send data. o FULL-DUPLEX--Both programs can send and receive data at the same time. Thus, both programs have send control. The SEND-RECEIVE MODE on a conversation is determined at the time the conversation is established. For further information, see "Characteristic Values and Send-Receive Modes" on page 1. ---------------- Program Partners Two programs involved in a conversation are called PARTNERS in the conversation. If a CRM-CRM logical connection exists, or can be made to exist, between the nodes containing the partner programs, two programs can communicate through the network with a conversation. The terms local and remote are used to differentiate between different ends of a conversation. If a program is being discussed as LOCAL, its partner program is said to be the REMOTE program for that conversation. For example, if Program A is being discussed, Program A is the local program and Program C is the remote program. Similarly, if Program C is being discussed as the local program, Program A is the remote program. Thus, a program can be both local and remote for a given conversation, depending on the circumstances. Although program partners are generally thought of as residing in different nodes in a network, the local and remote programs may, in fact, reside in the same node. Two programs communicate with each other the same way, whether they are in the same or different nodes. NOTE: A CPI Communications program may establish a conversation with a program that is using a product-specific programming interface for a particular environment and not CPI Communications. The conversation between Program B and Program D in Figure 1 is an example of such a situation. Some restrictions may apply in this situation, since CPI Communications does not support all available network functions. See Appendix D, "Mapping CPI Communications to LU 6.2 and OSI TP CRMs" on page 2 for a more complete discussion. Identifying the Partner Program CPI Communications requires a certain amount of destination information, such as the name of the partner program and the name of the CRM at the partner's node, before it can establish a conversation. Sources for this information include: o PROGRAM-SUPPLIED The program can supply the destination information directly. o SIDE INFORMATION The program can use data contained in local SIDE INFORMATION. The side information is accessed using an 8-byte SYMBOLIC DESTINATION NAME or sym_dest_name, which identifies the partner program. o DISTRIBUTED DIRECTORY The program can use a DIRECTORY OBJECT contained in a DISTRIBUTED DIRECTORY. The directory object represents a particular installation of a program and is identified by a variable-length DISTINGUISHED NAME (DN). Programs not having a DN for their partner program can search the directory for objects containing a PROGRAM FUNCTION IDENTIFIER (PFID). The PFID is a globally-unique identifier for the function provided by the program. There are some considerations to keep in mind when using the different techniques: o Program-supplied information may require recompilation if the address of the partner program changes. o Use of sym_dest_name allows only a small name space of locally-defined names. o Side information requires local administration on each system. o Movement of a program may result in update of side information on multiple systems. o Use of a distributed directory enables destination information to be stored in a single location and accessed by multiple programs. o As with the sym_dest_name, a DN identifies a particular installation of a program and destination information may not be known at program development time. For example, shrink-wrapped programs will not have access to the DN when distributed. Use of the PFID solves this problem by allowing a run-time search of the directory for all program installation objects with a particular functionality. o "Side Information" on page 1 and "Distributed Directory" on page 1 discuss how existing CPI Communications programs using side information can be migrated to use the distributed directory by using the sym_dest_name to identify a side-information entry containing a DN. --------------------- Operating Environment Figure 2 gives a more detailed view of Program A's operating environment. As in Figure 1, the bold black line shows the conversation Program A has established with its partner program. The new line between the program and CPI Communications represents Program A's use of program calls to communicate with CPI Communications. The different types of CPI Communications calls are discussed in "Program Calls." Node Environment * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * | *--------------* *-----------* *--------------* | | | Node Services|---------------| Program A |-----------| Oper. System | | | *--------------* *-----------* *--------------* | | | | | | | | CPU cycles | | | | | calls | | DASD | | | | *-------------* | | | Memory | | | | | | | | . | | | *------------* | *--------|-* . | | | | Side |---------| CPI-C | | . | | | | Information| |--------|-| | | | *------------* | CRM | | | | | *--------|-* | | | | | * - - - | - - - - - - - - - - - - - - - - - - | - - - - - - - - - - - - - - - - - * | | | | Conversation with Program C *------------* | | Distributed| . | Services | . *------------* . Figure 2. Operating Enviroment of a CPI Communications Program In addition to the new line with CPI Communications, Figure 2 also shows Program A using several other generic elements: o Node services o Side information o Distributed services - Distributed directory - Distributed security o Resource recovery interface o Operating system These elements are further discussed within this chapter. Node Services NODE SERVICES represents a number of "utility" functions within the local system environment that are available for CPI Communications and other programming interfaces. These functions are not related to the actual sending and receiving of CPI Communications data, and specific implementations differ from product to product. Node services includes the following general functions: o Setting and accessing of side information This function is required to set up the initial values of the side information and allow subsequent modification. It does not refer to individual program modification of the program's copy of the side information using Set calls, as described in "Conversation Characteristics." (Refer to specific product information for details.) o Setting and accessing of distributed directory information Node services is used by programs requiring direct interaction with a distributed directory. For example, a program might need to perform a search of the directory in order to determine the correct destination information. Once the correct object has been determined by making calls to node services, the program can pass the program destination information to CPI Communications. Alternatively, the program may pass a DN or PFID to CPI Communications and CPI Communications will access the directory (using node services) to retrieve the destination information for the program. NOTE TO IMPLEMENTERS: The local node services interface for CPI Communications interaction with the directory will vary based on the type of distributed directory available on the system. Minimum services that should be available from the local directory interface include: - Ability to place a program installation object into the directory - Ability to retrieve a program binding from a program installation object when the DN for the object is specified - Ability to retrieve a list of program bindings when a PFID is specified - Ability to remove a program installation object from the directory For further information on PROGRAM BINDING, see "Program Binding" on page 1. Appendix H, "CPI Communications Extensions for Use with DCE Directory" contains a sample definition of a local directory interface for interaction with the Distributed Computing Environment (DCE) Directory. o Program-startup processing A program is started either by receipt of notification that the remote program has issued an Allocate call for the conversation (discussed in greater detail in "Starter-Set Flows") or by local (operator) action. In either case, node services sets up the data paths and operating environment required by the program, validates and establishes security parameters under which the program will execute, and then allows the program to begin execution. In the former case, node services receives the notification, retrieves the name of the program to be started and any access security information included in the conversation startup request, and then proceeds as if starting a program by local action. o Program-termination processing (both normal and abnormal) The program should terminate all conversations before the end of the program. However, if the program does not terminate all conversations, node services will abnormally deallocate any dangling conversations. o Providing support for programs with multiple partners As is discussed in greater detail in "Multiple Conversations" on page 1, some programs do work on behalf of multiple partners. Each partner is represented by a CONTEXT, or collection of logical attributes. Node services provides the necessary function and support (through system interfaces) to allow the program to manage different partner contexts. See "Contexts and Context Management" for more information. o Acquiring and validating access security information Node services provides interfaces for CRMs both to acquire and to validate access security information on behalf of a user. In a distributed system, node services may use a distributed security service that provides authentication services to create or validate the access security information. See "Conversation Security" on page 1 for more information. Side Information As was previously discussed in "Identifying the Partner Program," CPI Communications allows a program to identify its partner program with a sym_dest_name. The sym_dest_name is provided on the Initialize_Conversation call and corresponds to a side-information entry containing destination information for the partner program. The information that needs to be specified in the side-information entry depends on the type of CRM (LU 6.2 or OSI TP) required to contact the program. Each piece of information may have associated attributes such as length and format for AP_Title and AE_Qualifier. Here is the possible information if the CRM type is LU 6.2: o partner_LU_name Indicates the name of the LU where the partner program is located. This LU name is any name for the remote LU recognized by the local LU for the purpose of allocating a conversation. Here is the possible information if the CRM type is OSI TP: o AP_title When combined with the AE_qualifier, the application-process-title indicates the name of the application-entity where the partner program is located. The AP_title combined with an AE_qualifier is equivalent to a fully qualified partner_LU_name in SNA. o AE_qualifier Indicates the application-entity-qualifier, which is used to distinguish between application-entities having the same AP_title, if required. o application_context_name Specifies the name of the application context being used on the conversation. An APPLICATION CONTEXT is a set of operating rules that two programs have agreed to follow. In addition, the entry may contain the following information, which is not CRM-type dependent. o TP_name Specifies the name of the remote program. TP_name stands for "transaction program name." In this manual, transaction program, application program, and program are synonymous, all denoting a program using CPI Communications. See Appendix D, "Mapping CPI Communications to LU 6.2 and OSI TP CRMs" on page 2 for details of how a CPI Communications program can interact with non-CPI Communications programs. o mode_name Used to designate the properties of the logical connection that will be established for the conversation. The properties include, for example, the class of service to be used on the conversation. The system administrator defines a set of mode names used by the local CRM to establish logical connections with its partners. o distinguished_name Indicates a DN that can be used to access destination information in a distributed directory. The information retrieved from the distributed directory will be used to establish the conversation. Associated attributes of directory_syntax and directory_encoding may be present. If a distinguished_name is present, only the security information from the entry (conversation_security_type, security_user_ID, and security_password) will be used. All other destination information from this side information entry will be ignored. o conversation_security_type Specifies the type of access security information to be included in the conversation startup request. See "Conversation Security" on page 1 for more information. o security_user_ID Specifies the user ID to be used for validation of access to the remote program by the partner system. o security_password Specifies the password to be used with the user ID for validation of access to the remote program by the partner system. Programs not wanting to use side information can specify a sym_dest_name of blanks on the Initialize_Conversation call. For more information, see "Initialize_Conversation (CMINIT)." Distributed Directory A distributed directory is a service that enables information to be stored in a single location. It is referred to as "distributed" because the information can be accessed from multiple locations in a network using local directory interfaces. The local directory interface (part of node services) handles the communications and information flows required to retrieve the requested information from the directory. Information is stored in the directory by placing it in a directory object. Directory objects may contain many different pieces of information. Figure 3 shows Program A interacting directly with a local directory interface. When Program A provides a name to node services ([1]), node services accesses the distributed directory ([2] and [3]). The retrieved object is then returned to the program ([4]). Node * - - - - - - - - - - - - - - - - - - - - - - - - - - - * | *---------------* [1] *-----------* | | |Local Directory|---< name <----| Program A | | | | Interface |-> dir. obj.>--| | | | *---------------* [4] *-----------* | | [2]| | | | V A | | | | | | name directory | | | object | | | |[3] | | | | | * - - - | - - - -|- - - - - - - - - - - - - - - - - - - * | | | | *------------* | Distributed| | Directory | *------------* Figure 3. Generic Program Interaction with a Distributed Directory CPI Communications Directory Object A directory object that contains the destination information for a single installation of a partner program is referred to as a PROGRAM INSTALLATION OBJECT. A program installation object includes the following information: o PROGRAM FUNCTION IDENTIFIER (PFID) The PFID uniquely identifies the function provided by the program, thus allowing multiple installations of a given program, with different DNs, to be recognized as providing the same function. For example, multiple installations of a distributed mail application might all have the same PFID. See "Program Function Identifier (PFID)" on page 1 for a more detailed discussion of the PFID. NOTE: On distributed directories supporting attribute types, the PFID attribute type is uniquely identified with a registered ISO object identifier of 1.3.18.0.2.4.13. o PROGRAM BINDING The program binding contains information required by a partner program to establish a conversation with the program. Because multiple CRMs can be used to reach the same program installation, there may be more than one program binding in a single directory object. Each program binding contains the following information: - local address (TP_name) - mode (mode_name) - partner_principal_name--identifies the principal name used by the remote CRM for authentication of conversation startup requests - required_user_name_type--identifies the type of user name required for access to the partner program - CRM-specific information For LU 6.2: - partner_LU_name For OSI TP: - AE_qualifier - AP_title - application_context_name NOTES: 1. On distributed directories supporting attribute types, the CPI Communications program binding attribute is uniquely identified with a registered ISO object identifier of 1.3.18.0.2.4.14. See "Program Binding" on page 1 for guidelines on the specific structure and format of the PFID and program binding. 2. On distributed directories supporting attribute types, the CPI Communications program installation object is uniquely identified as an object class with a registered ISO object identifier of 1.3.18.0.2.6.7. Using the Distributed Directory Figure 4 illustrates two ways that a CPI Communications program might use destination information stored in a distributed directory: o The program accesses the distributed directory directly with a DN to retrieve a program installation object ([1] and [2]). The program installation object contains a program binding as one of its pieces of information. The program passes the program binding to CPI Communications ([3]) using the Set_Partner_ID call with the partner_ID_type parameter set to CM_PROGRAM_BINDING. CPI Communications then uses the program-binding information to allocate the conversation. o Instead of accessing the directory itself, the program passes a DN for a program installation object to CPI Communications ([3]) using the Set_Partner_ID call with a partner_ID_type parameter set to CM_DISTINGUISHED_NAME. CPI Communications uses the DN to access the distributed directory and retrieve the program installation object ([4]). CPI Communications then uses the program-binding information from the object to allocate the conversation. * - - - - - - - - - - - - - - - - - - - - - - - - - - - * | *--------------* [1] *-----------* | | | Node |----<- DN <----| Program A | | | | Services |-> dir. obj.>--| | | | *--------------* [2] *-----------* | | | | | [3]| | | | V A | [4] *---------|-* | | | | *------<---->----| CPI-C | | | | DN directory |---------|-| | | | object | CRM | | | | | | *---------|-* | | | | | | * - - - | - - - -|- - - - - - - - - - - - - - | - - - - * | | | | | | Conversation with Program C *------------* | | Distributed| . | Directory | . *------------* . Figure 4. Program Interaction with CPI Communications and a Distributed Directory Both these examples require the program to provide a DN directly, either to node services or to CPI Communications. There are, however, several other ways a program can access information contained in the distributed directory: o The program provides a sym_dest_name on the Initialize_Conversation call that corresponds to a side information entry containing a DN. CPI Communications will then use the DN to access the distributed directory and retrieve the program binding. After the conversation is allocated, the program can use "Extract_Partner_ID (CMEPID)" to determine the program binding used. o The program passes a PFID to CPI Communications using "Set_Partner_ID (CMSPID)" with a partner_ID_type parameter set to CM_PROGRAM_FUNCTION_ID. CPI Communications uses the PFID to search the distributed directory and retrieve a program installation object providing the appropriate function. CPI Communications then uses the program-binding information from the object to allocate the conversation. o The program accesses the distributed directory using node services and locates the appropriate directory object (and program binding) using something other than a DN. For example, the program might search the directory for non-CPI-C information to determine the correct program installation object. Once located, the program binding from the directory object can be passed to CPI Communications using "Set_Partner_ID (CMSPID)" with a partner_ID_type parameter set to CM_PROGRAM_BINDING. Interaction with Side Information and Set Calls CPI Communications does not attempt to integrate destination information from the distributed directory with destination information obtained from Set calls or side information. The following rules apply: o If the partner_ID characteristic is null, CPI Communications will use the values of the destination information obtained from Set calls or side information. o If a partner_ID is non-null, Set calls to provide alternative destination information (other than Set_Partner_ID, Set_Conversation_Security_Type, Set_Security_User_ID, and Set_Security_Password) are not allowed. The program is notified of the error condition with a return_code of CM_PROGRAM_PARAMETER_CHECK. o If a non-null partner_ID is available, CPI Communications will use it to establish the conversation. CPI Communications will ignore any other destination information (other than security information) that may have been established by Set calls or side information. Distributed Security Distributed security allows a user or system to be defined at a single trusted authentication server using PRINCIPAL NAMES rather than user IDs. For example, a user or program accessing three different systems might require three separate sets of user IDs and passwords, one for each system. Using distributed security, a user or system could use a single principal name and password to access all three systems. Figure 5 shows how a distributed security service works. In this example, the user has already signed on with a principal name and has been authenticated to the local security service interface. After this initial sign-on, the user is not required to provide any additional security information. When the user executes a program that requests a conversation from the CRM ([1]), the CRM communicates with the local security service interface ([2]) and retrieves the security information to be sent with the conversation startup request. The local security service communicates with the Authentication Server ([3]) to determine this information, also referred to as authentication tokens, and returns it to the CRM ([4]). The CRM then sends the security information to the partner CRM in the conversation startup request ([5]). When the partner CRM receives the conversation startup request, it accesses its local security service interface and validates the authentication tokens ([6] and [7]). *--------------* | Program | *--------------* [1] | V *--------------* *--------------* | | start-up request | | | CRM |-------->----------| CRM | | | security info | | *--------------* [5] *--------------* [2] | [4] A [6] | [7] | V | V A * - - - | - - - -|- - - - - - - - - - - - -|- - - - | - - - * | *------------------* *------------------* | | | Security Service | | Security Service | | | | Local Interface | | Local Interface | | | *------------------* *------------------* | | | | | A | | [3] | | | V *---------------------------* | | | | Authentication Server | | | *-----| and | | | | User Registry | | | *---------------------------* | | | * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * Distributed Security Service Figure 5. CRM Interaction with Distributed Security Service Operating System CPI Communications depends on the operating system for the normal execution and operation of the program. Activities such as linking, invoking, and compiling programs are all described in product documentation. ------------- Program Calls CPI Communications programs communicate with each other by making program CALLS. These calls are used to establish the CHARACTERISTICS of the conversation and to exchange data and control information between the programs. An example of a conversation characteristic is the conversation_type characteristic, which indicates whether the conversation is basic or mapped. Conversation characteristics are discussed in greater detail in "Conversation Characteristics" on page 1. When a program makes a CPI Communications call, the program passes characteristics and data to CPI Communications using INPUT PARAMETERS. When the call completes, CPI Communications passes data and status information back to the program using OUTPUT PARAMETERS. The return_code output parameter is returned for all CPI Communications calls. It indicates whether a call completed successfully or if an error was detected that caused the call to fail. CPI Communications uses additional output parameters on some calls to pass status information to the program. These parameters include the control_information_received, data_received, and status_received parameters. Additionally, the return code may be associated with SECONDARY INFORMATION, which can be used to determine the cause of the return code. The function provided by CPI Communications calls can be categorized into two groups: o STARTER-SET CALLS The starter-set calls allow for simple communication of data between two programs and assume the programs use the initial values for the CPI Communications conversation characteristics. Example flows for use of these calls are provided in "Starter-Set Flows." o ADVANCED-FUNCTION CALLS The advanced-function calls are used to do more specialized processing than that provided by the default set of characteristic values. The advanced-function calls provide more careful synchronization and monitoring of data. For example, the Set calls allow a program to modify conversation characteristics, and the Extract calls allow a program to examine the conversation characteristics that have been assigned to a given conversation. Example flows for use of these calls are provided in "Advanced-Function Flows." NOTE: The breakdown of function between starter-set and advanced-function calls is not intended to imply a restriction on how the calls may be combined or used. Starter-set calls, for example, are often used together with advanced-function calls. The distinction between the two types of calls is intended to aid the CPI Communications programmer and to indicate the relative degree of complexity. Table 2 lists the two groups of CPI Communications calls. +---------------------------------------------------------------------------+ | Table 2. Breakdown of Calls between Starter Set and Advanced Function | +-----------------------------------+---------------------------------------+ | STARTER SET | | +-----------------------------------+---------------------------------------+ | | | | Initialize_Conversation | | | Accept_Conversation | | | Allocate | | | Send_Data | | | Receive | | | Deallocate | | | | | +-----------------------------------+---------------------------------------+ | ADVANCED FUNCTION | | +-----------------------------------+---------------------------------------+ | | | | Accept_Incoming | Set_AE_Qualifier | | Cancel_Conversation | Set_Allocate_Confirm | | Confirm | Set_AP_Title | | Confirmed | Set_Application_Context_Name | | Convert_Incoming | Set_Begin_Transaction | | Convert_Outgoing | Set_Confirmation_Urgency | | Deferred_Deallocate | Set_Conversation_Security_Password | | Flush | Set_Conversation_Security_Type | | Include_Partner_In_Transaction | Set_Conversation_Security_User_ID | | Initialize_For_Incoming | Set_Conversation_Type | | Prepare | Set_Deallocate_Type | | Prepare_To_Receive | Set_Error_Direction | | Receive_Expedited_Data | Set_Fill | | Release_Local_TP_Name | Set_Initialization_Data | | Request_To_Send | Set_Log_Data | | Send_Error | Set_Mode_Name | | Send_Expedited_Data | Set_Partner_ID | | Specify_Local_TP_Name | Set_Partner_LU_Name | | Test_Request_To_Send_Received | Set_Prepare_Data_Permitted | | Wait_For_Completion | Set_Prepare_To_Receive_Type | | Wait_For_Conversation | Set_Processing_Mode | | | Set_Queue_Callback_Function | | Extract_AE_Qualifier | Set_Queue_Processing_Mode | | Extract_AP_Title | Set_Receive_Type | | Extract_Application_Context_Name | Set_Return_Control | | Extract_Conversation_Context | Set_Send_Receive_Mode | | Extract_Conversation_State | Set_Send_Type | | Extract_Conversation_Type | Set_Sync_Level | | Extract_Initialization_Data | Set_TP_Name | | Extract_Maximum_Buffer_Size | Set_Transaction_Control | | Extract_Mode_Name | | | Extract_Partner_ID | | | Extract_Partner_LU_Name | | | Extract_Secondary_Information | | | Extract_Security_User_ID | | | Extract_Send_Receive_Mode | | | Extract_Sync_Level | | | Extract_TP_Name | | | Extract_Transaction_Control | | | | | +-----------------------------------+---------------------------------------+ A list of the calls and a brief description of each call's function is provided at the beginning of Chapter 4, "Call Reference Section" on topic 1. --------------------------- Establishing a Conversation Here is a simple example of how Program A starts a conversation with Program C: 1. Program A issues the Initialize_Conversation call to prepare to start the conversation. It uses a sym_dest_name to designate Program C as its partner program and receives back a unique conversation identifier, the conversation_ID. Program A will use this conversation_ID in all future calls intended for that conversation. 2. Program A issues an Allocate call to start the conversation. 3. CPI Communications tells the node containing Program C that Program C needs to be started by sending a CONVERSATION STARTUP REQUEST to the partner CRM. The conversation startup request contains information necessary to start the partner program and establish the conversation. 4. Program C is started and issues the Accept_Conversation call. It receives back a unique conversation_ID (not necessarily the same as the one provided to Program A). Program C will use its conversation_ID in all future calls intended for that conversation. After issuing their respective Initialize_Conversation and Accept_Conversation calls, both Program A and Program C have a set of default CONVERSATION CHARACTERISTICS set up for the conversation. The default values established by CPI Communications are discussed in "Conversation Characteristics" on page 1. Multiple Conversations In the previous example, Program A established a single conversation with a single partner, but CPI Communications allows a program to communicate with multiple partners using multiple, concurrent conversations: o OUTBOUND CONVERSATIONS--A program initiates more than one conversation. o INBOUND CONVERSATIONS--A program accepts more than one conversation. Specific combinations of outbound and inbound conversations are determined by application design. The sections that follow discuss in greater detail the concepts required for multiple conversations. Partner Program Names After a program issues Initialize_Conversation to establish its conversation characteristics, a name for its partner program (the TP_Name) is established. This name is transmitted to the remote system in the conversation startup request after the program issues the Allocate call. At the remote system, the partner program can be started in one of two ways: o Receipt of a conversation startup request o Local action In the first case, node services starts the program named in the conversation startup request. However, if a program is started locally, the program must notify node services of its ability to accept conversations for a given name. The program ASSOCIATES a name with itself by issuing the Specify_Local_TP_Name call. The program can RELEASE a name from association with itself by issuing the Release_Local_TP_Name call. To accept multiple conversations for different names, the program issues multiple Specify_Local_TP_Name calls, thus associating multiple names with itself. NOTE: A locally-started program cannot accept conversations until a name has been associated with the program. Multiple Outbound Conversations Figure 6 shows Program A establishing conversations with two partners. For example, a program may need to request data from multiple data bases on different nodes to answer a particular query. The conversation with Program B is initialized with an Initialize_Conversation (CMINIT) call that returns a conversation_ID parameter of X. The conversation with Program C is initialized with an Initialize_Conversation call that returns a conversation_ID parameter of Y. When Program A issues subsequent calls with a conversation_ID of X, CPI Communications will know these calls apply to the conversation with Program B. Similarly, when Program A issues subsequent calls with a conversation_ID of Y, CPI Communications will know these calls apply to the conversation with Program C. Refer to the published book (SC31-6180-00) to view the following picture. Figure 6. A Program Using Multiple Outbound CPI Communications Conversations NOTE: In some implementing environments, Program A can share the conversation_ID with another task, allowing that task to issue calls on the conversation with Program C. Multiple Inbound Conversations Some programs, often referred to as SERVER programs, may need to accept more than one inbound conversation. For example, a server could accept conversations from multiple partners in order to work on the request from one partner while waiting for a second partner's request or work to complete. This type of application is shown in Figure 7, where Programs D and E have both chosen to initiate conversations with the same partner, Program S. Refer to the published book (SC31-6180-00) to view the following picture. Figure 7. A Program Using Multiple Inbound CPI Communications Conversations In the simplest case, Program S can accept the two conversations by issuing Accept_Conversation twice. Alternatively, Program S may make use of two advanced calls, Initialize_For_Incoming and Accept_Incoming. NOTE: A program would use the advanced calls to achieve greater programming flexibility. See "Non-Blocking Operations" on page 1 for a more detailed discussion. See "Example 12: Accepting Multiple Conversations Using Blocking Calls" and "Example 13: Accepting Multiple Conversations Using Conversation-Level Non-Blocking Calls" for examples using these calls. Contexts and Context Management Node services provides support for programs that perform work on behalf of multiple partners, such as server Program S in the previous example. Each time a program accepts an incoming conversation, a new CONTEXT is created. The context is identified by a system-wide CONTEXT IDENTIFIER and is used by node services to group logical attributes for the work to be done on behalf of the partner program. Node services maintains one or more contexts for a program in execution within the node. For each program, there is one distinguished context, the CURRENT CONTEXT, within which work is currently being done. A program can manage different contexts by making calls to node services in order to: o Create a new context o Terminate a context o Set the current context o Retrieve the context identifier of the current context NOTE: The discussion of contexts throughout this and following sections assumes a context is maintained on a program basis. However, in a system that supports multi-threaded programs, the context may be maintained on a thread basis. Relationship between Contexts and Conversations Each conversation is assigned to a context when it is allocated or accepted. o An outgoing conversation is assigned to the current context of the program when it issues the Allocate call. o An incoming conversation is assigned to the new context created when the program accepts the incoming conversation with the Accept_Conversation or Accept_Incoming call. A program can retrieve the context identifier for a conversation's context by issuing the Extract_Conversation_Context call. The program's current context is set by node services to the newly created context when an Accept_Conversation or Accept_Incoming call completes successfully with return_code set to CM_OK. Relationship between Contexts and Security Parameters Security parameters are among the logical attributes maintained by node services for a context. The access security information carried in the conversation startup request is used to set the security parameters for the context created as a result of an incoming conversation. The security parameters for other contexts are based on security information maintained within the system. See "Conversation Security" for a complete discussion of conversation security. Inbound and Outbound Conversations A program that accepts incoming conversations from multiple program partners must ensure that work is done within the right context. In the expanded server example shown in Figure 8, Program S accepts two conversations, one each from Programs D and E. Two new contexts are created, one for the work done on behalf of Program D and one for the work done on behalf of Program E. Program S can retrieve the context identifier for each conversation by issuing the Extract_Conversation_Context call twice. Refer to the published book (SC31-6180-00) to view the following picture. Figure 8. Server Program with Both Inbound and Outbound Conversations Now consider a scenario where Program S is doing work for Program E and receives a request from Program D. The request is for information that Program S does not have. In this case, Program S allocates a conversation to a third partner, Program F, in order to answer Program D's request. Before allocating the conversation to Program F, Program S must first ensure that it is using the correct context. It does this by setting the current context to that for Program D. This causes the outgoing conversation to be established using information, such as the proper security parameters, from the correct context. "Conversation Security" on page 1 provides a complete discussion of how the current context is used by node services to establish security parameters for new conversations. For more information about establishing and managing conversations, see the following sections: o "Non-Blocking Operations" for use of non-blocking calls o "Example 1: Data Flow in One Direction" o "Example 12: Accepting Multiple Conversations Using Blocking Calls" o "Example 13: Accepting Multiple Conversations Using Conversation-Level Non-Blocking Calls" o Usage notes for "Accept_Conversation (CMACCP)" o Usage notes for "Accept_Incoming (CMACCI)" o Usage notes for "Initialize_Conversation (CMINIT)" o Usage notes for "Initialize_For_Incoming (CMINIC)" ---------------------------- Conversation Characteristics As discussed previously, CPI Communications maintains a set of characteristics for each conversation used by a program. These characteristics are established for each program on a per-conversation basis, and the initial values assigned to the characteristics depend on the program's role in starting the conversation. Table 3 provides a comparison of the conversation characteristics and initial values as set by the Initialize_Conversation, Accept_Conversation, Initialize_For_Incoming, and Accept_Incoming calls. The uppercase values shown in the table are pseudonyms that represent integer values. The CPI Communications naming conventions for these characteristics, as well as for calls, variables, and characteristic values, are discussed in "Naming Conventions--Calls, Characteristics, Variables, and Values." Modifying and Viewing Characteristics In the example in "Establishing a Conversation," the programs used the initial set of program characteristics provided by CPI Communications as defaults. However, CPI Communications provides calls that allow a program to modify and view the conversation characteristics for a particular conversation. Restrictions on when a program can issue one of these calls are discussed in the individual call descriptions in Chapter 4, "Call Reference Section." NOTE: As already stated, CPI Communications maintains conversation characteristics on a per-conversation basis. Changes to a characteristic will affect only the conversation indicated by the conversation_ID. Changes made to a characteristic do not affect future default values assigned, nor do the changes affect the initial system values (in the case of values derived from the side information). For example, consider the conversation characteristic that defines what type of conversation the initiating program will have, the conversation_type characteristic. CPI Communications initially sets this characteristic to CM_MAPPED_CONVERSATION and stores this characteristic value for use in maintaining the conversation. A program can issue the Extract_Conversation_Type call to view this value. A program can issue the Set_Conversation_Type call (after issuing Initialize_Conversation but before issuing Allocate) to change this value. The change remains in effect until the conversation ends or until the program issues another Set_Conversation_Type call. The Set calls are also used to prevent programs from attempting incorrect syntactic or semantic changes to conversation characteristics. For example, if a program attempts to change the conversation_type after the conversation has already been established (an illegal change), CPI Communications informs the program of its error and disallows the change. Details on this type of checking are provided in the individual call descriptions in Chapter 4, "Call Reference Section." NOTE: For a combined view of the following four tables, see the published book (SC31-6180-00). +--------------------------------------------------------------------+ | Table 3. Characteristics and Their Default Values--Part 1 | +----------------------------------+---------------------------------+ | NAME OF CHARACTERISTIC | INITIALIZE_CONVERSATION SETS IT | | | TO: | +----------------------------------+---------------------------------+ | context_ID | Not set | +----------------------------------+---------------------------------+ | context_ID_length | Not set | +----------------------------------+---------------------------------+ | conversation_security_type | The security type from side | | | information referenced by | | | sym_dest_name. If a blank | | | sym_dest_name was specified, | | | conversation_security_type will | | | be CM_SECURITY_SAME. | +----------------------------------+---------------------------------+ | conversation_state | CM_INITIALIZE_STATE | +----------------------------------+---------------------------------+ | conversation_type | CM_MAPPED_CONVERSATION | +----------------------------------+---------------------------------+ | deallocate_type | CM_DEALLOCATE_SYNC_LEVEL | +----------------------------------+---------------------------------+ | error_direction | CM_RECEIVE_ERROR | +----------------------------------+---------------------------------+ | fill | CM_FILL_LL | +----------------------------------+---------------------------------+ | log_data | Null | +----------------------------------+---------------------------------+ | log_data_length | 0 | +----------------------------------+---------------------------------+ | mode_name | The mode name from side | | | information referenced by | | | sym_dest_name. If a blank | | | sym_dest_name was specified, | | | mode_name will be the null | | | string. | +----------------------------------+---------------------------------+ | mode_name_length | The length of mode_name. If a | | | blank sym_dest_name was | | | specified, mode_name_length | | | will be 0. | +----------------------------------+---------------------------------+ | partner_LU_name | The partner LU name from side | | | information referenced by | | | sym_dest_name. If a blank | | | sym_dest_name was specified, | | | partner_LU_name will be a | | | single blank. | +----------------------------------+---------------------------------+ | partner_LU_name_length | The length of partner_LU_name. | | | If a blank sym_dest_name was | | | specified, | | | partner_LU_name_length will be | | | 1. | +----------------------------------+---------------------------------+ | prepare_to_receive_type | CM_PREP_TO_RECEIVE_SYNC_LEVEL | +----------------------------------+---------------------------------+ | processing_mode | CM_BLOCKING | +----------------------------------+---------------------------------+ | receive_type | CM_RECEIVE_AND_WAIT | +----------------------------------+---------------------------------+ | return_control | CM_WHEN_SESSION_ALLOCATED | +----------------------------------+---------------------------------+ | security_password | The security password from side | | | information referenced by | | | sym_dest_name. If a blank | | | sym_dest_name was specified, | | | security_password will be the | | | null string. | +----------------------------------+---------------------------------+ | security_password_length | The length of | | | security_password. If a blank | | | sym_dest_name was specified, | | | security_password_length will | | | be 0. | +----------------------------------+---------------------------------+ | security_user_ID | The security user ID from side | | | information referenced by | | | sym_dest_name. If a blank | | | sym_dest_name was specified, | | | security_user_ID will be the | | | null string. | +----------------------------------+---------------------------------+ | security_user_ID_length | The length of security_user_ID. | | | If a blank sym_dest_name was | | | specified, | | | security_user_ID_length will be | | | 0. | +----------------------------------+---------------------------------+ | send_type | CM_BUFFER_DATA | +----------------------------------+---------------------------------+ | sync_level | CM_NONE | +----------------------------------+---------------------------------+ | TP_name | The program name from side | | | information referenced by | | | sym_dest_name. If a blank | | | sym_dest_name was specified, | | | TP_name will be a single blank. | +----------------------------------+---------------------------------+ | TP_name_length | The length of TP_name. If a | | | blank sym_dest_name was | | | specified, TP_name_length will | | | be 1. | +----------------------------------+---------------------------------+ +--------------------------------------------------------------------+ | Table 4. Characteristics and Their Default Values--Part 2 | +----------------------------------+---------------------------------+ | NAME OF CHARACTERISTIC | ACCEPT_CONVERSATION SETS IT TO: | +----------------------------------+---------------------------------+ | context_ID | The context_ID of the newly | | | created context | +----------------------------------+---------------------------------+ | context_ID_length | The length of context_ID | +----------------------------------+---------------------------------+ | conversation_security_type | Not applicable | +----------------------------------+---------------------------------+ | conversation_state | CM_RECEIVE_STATE | +----------------------------------+---------------------------------+ | conversation_type | The value received on the | | | conversation startup request | +----------------------------------+---------------------------------+ | deallocate_type | CM_DEALLOCATE_SYNC_LEVEL | +----------------------------------+---------------------------------+ | error_direction | CM_RECEIVE_ERROR | +----------------------------------+---------------------------------+ | fill | CM_FILL_LL | +----------------------------------+---------------------------------+ | log_data | Null | +----------------------------------+---------------------------------+ | log_data_length | 0 | +----------------------------------+---------------------------------+ | mode_name | The mode name for the logical | | | connection on which the | | | conversation startup request | | | arrived | +----------------------------------+---------------------------------+ | mode_name_length | The length of mode_name | +----------------------------------+---------------------------------+ | partner_LU_name | The partner LU name for the | | | logical connection on which the | | | conversation startup request | | | arrived | +----------------------------------+---------------------------------+ | partner_LU_name_length | The length of partner_LU_name | +----------------------------------+---------------------------------+ | prepare_to_receive_type | CM_PREP_TO_RECEIVE_SYNC_LEVEL | +----------------------------------+---------------------------------+ | processing_mode | CM_BLOCKING | +----------------------------------+---------------------------------+ | receive_type | CM_RECEIVE_AND_WAIT | +----------------------------------+---------------------------------+ | return_control | Not applicable | +----------------------------------+---------------------------------+ | security_password | Not applicable | +----------------------------------+---------------------------------+ | security_password_length | Not applicable | +----------------------------------+---------------------------------+ | security_user_ID | The value received on the | | | conversation startup request | +----------------------------------+---------------------------------+ | security_user_ID_length | The length of security_user_ID | +----------------------------------+---------------------------------+ | send_type | CM_BUFFER_DATA | +----------------------------------+---------------------------------+ | sync_level | The value received on the | | | conversation startup request | +----------------------------------+---------------------------------+ | TP_name | The value received on the | | | conversation startup request | +----------------------------------+---------------------------------+ | TP_name_length | The length of TP_name | +----------------------------------+---------------------------------+ +--------------------------------------------------------------------+ | Table 5. Characteristics and Their Default Values--Part 3 | +----------------------------------+---------------------------------+ | NAME OF CHARACTERISTIC | INITIALIZE_FOR_INCOMING SETS IT | | | TO: | +----------------------------------+---------------------------------+ | context_ID | Not set | +----------------------------------+---------------------------------+ | context_ID_length | Not set | +----------------------------------+---------------------------------+ | conversation_security_type | Not applicable | +----------------------------------+---------------------------------+ | conversation_state | CM_INITIALIZE_INCOMING_STATE | +----------------------------------+---------------------------------+ | conversation_type | Not set | +----------------------------------+---------------------------------+ | deallocate_type | CM_DEALLOCATE_SYNC_LEVEL | +----------------------------------+---------------------------------+ | error_direction | CM_RECEIVE_ERROR | +----------------------------------+---------------------------------+ | fill | CM_FILL_LL | +----------------------------------+---------------------------------+ | log_data | Null | +----------------------------------+---------------------------------+ | log_data_length | 0 | +----------------------------------+---------------------------------+ | mode_name | Not set | +----------------------------------+---------------------------------+ | mode_name_length | Not set | +----------------------------------+---------------------------------+ | partner_LU_name | Not set | +----------------------------------+---------------------------------+ | partner_LU_name_length | Not set | +----------------------------------+---------------------------------+ | prepare_to_receive_type | CM_PREP_TO_RECEIVE_SYNC_LEVEL | +----------------------------------+---------------------------------+ | processing_mode | CM_BLOCKING | +----------------------------------+---------------------------------+ | receive_type | CM_RECEIVE_AND_WAIT | +----------------------------------+---------------------------------+ | return_control | Not applicable | +----------------------------------+---------------------------------+ | security_password | Not applicable | +----------------------------------+---------------------------------+ | security_password_length | Not applicable | +----------------------------------+---------------------------------+ | security_user_ID | Not set | +----------------------------------+---------------------------------+ | security_user_ID_length | Not set | +----------------------------------+---------------------------------+ | send_type | CM_BUFFER_DATA | +----------------------------------+---------------------------------+ | sync_level | Not set | +----------------------------------+---------------------------------+ | TP_name | Not set | +----------------------------------+---------------------------------+ | TP_name_length | Not set | +----------------------------------+---------------------------------+ +--------------------------------------------------------------------+ | Table 6. Characteristics and Their Default Values--Part 4 | +----------------------------------+---------------------------------+ | NAME OF CHARACTERISTIC | ACCEPT_INCOMING SETS IT TO: | +----------------------------------+---------------------------------+ | context_ID | The context_ID of the newly | | | created context | +----------------------------------+---------------------------------+ | context_ID_length | The length of context_ID | +----------------------------------+---------------------------------+ | conversation_security_type | Not applicable | +----------------------------------+---------------------------------+ | conversation_state | CM_RECEIVE_STATE | +----------------------------------+---------------------------------+ | conversation_type | The value received on the | | | conversation startup request | +----------------------------------+---------------------------------+ | deallocate_type | Not changed by Accept_Incoming | +----------------------------------+---------------------------------+ | error_direction | Not changed by Accept_Incoming | +----------------------------------+---------------------------------+ | fill | Not changed by Accept_Incoming | +----------------------------------+---------------------------------+ | log_data | Not changed by Accept_Incoming | +----------------------------------+---------------------------------+ | log_data_length | Not changed by Accept_Incoming | +----------------------------------+---------------------------------+ | mode_name | The mode name for the logical | | | connection on which the | | | conversation startup request | | | arrived | +----------------------------------+---------------------------------+ | mode_name_length | The length of mode_name | +----------------------------------+---------------------------------+ | partner_LU_name | The partner LU name for the | | | logical connection on which the | | | conversation startup request | | | arrived | +----------------------------------+---------------------------------+ | partner_LU_name_length | The length of partner_LU_name | +----------------------------------+---------------------------------+ | prepare_to_receive_type | Not changed by Accept_Incoming | +----------------------------------+---------------------------------+ | processing_mode | Not changed by Accept_Incoming | +----------------------------------+---------------------------------+ | receive_type | Not changed by Accept_Incoming | +----------------------------------+---------------------------------+ | return_control | Not applicable | +----------------------------------+---------------------------------+ | security_password | Not applicable | +----------------------------------+---------------------------------+ | security_password_length | Not applicable | +----------------------------------+---------------------------------+ | security_user_ID | The value received on the | | | conversation startup request | +----------------------------------+---------------------------------+ | security_user_ID_length | The length of security_user_ID | +----------------------------------+---------------------------------+ | send_type | Not changed by Accept_Incoming | +----------------------------------+---------------------------------+ | sync_level | The value received on the | | | conversation startup request | +----------------------------------+---------------------------------+ | TP_name | The value received on the | | | conversation startup request | +----------------------------------+---------------------------------+ | TP_name_length | The length of TP_name | +----------------------------------+---------------------------------+ Characteristic Values and CRMs Some conversation characteristic values are meaningful only for a particular CRM type. For example, an error_direction value of CM_SEND_ERROR has meaning only for an LU 6.2 CRM. On the other hand, a sync_level value of CM_NONE paired with a deallocate_type value of CM_DEALLOCATE_CONFIRM has meaning only for an OSI TP CRM. These CRM-type-sensitive characteristic values and value pairs are listed below: o For an LU 6.2 CRM: - error_direction (CM_SEND_ERROR) o For an OSI TP CRM: - allocate_confirm (CM_ALLOCATE_CONFIRM) - prepared_data_permitted (CM_PREPARE_DATA_PERMITTED) - transaction_control (CM_UNCHAINED_TRANSACTIONS) - sync_level (CM_NONE) paired with deallocate_type (CM_DEALLOCATE_CONFIRM) - sync_level (CM_SYNC_POINT) paired with deallocate_type (CM_DEALLOCATE_CONFIRM) - sync_level (CM_SYNC_POINT) paired with deallocate_type (CM_DEALLOCATE_FLUSH) - sync_level (CM_SYNC_POINT_NO_CONFIRM) paired with deallocate_type (CM_DEALLOCATE_CONFIRM) - sync_level (CM_SYNC_POINT_NO_CONFIRM) paired with deallocate_type (CM_DEALLOCATE_FLUSH) - sync_level (CM_SYNC_POINT_NO_CONFIRM) paired with send_receive_mode (CM_HALF_DUPLEX) CPI Communications considers a conversation to be USING A PARTICULAR CRM TYPE if one of the following events occurs: o The program has successfully set a characteristic value or value pair for the conversation that is meaningful only for that CRM type. o The conversation has been allocated on that CRM type. When the conversation is using a particular CRM type, the implications are: o The program will receive a CM_PROGRAM_PARAMETER_CHECK return code if it attempts to set any characteristic value that is meaningful only for a different CRM type. For example, suppose a program has successfully set the allocate_confirm characteristic on a conversation to CM_ALLOCATE_CONFIRM, using the Set_Allocate_Confirm call. CPI Communications now considers this conversation to be using an OSI TP CRM. If the program then issues a Set_Error_Direction call on the conversation with error_direction set to CM_SEND_ERROR, the program will receive a CM_PROGRAM_PARAMETER_CHECK return code. Details on this type of checking are provided in the individual call descriptions in Chapter 4, "Call Reference Section." o The conversation will only be allocated on that CRM type. If a conversation is using one CRM type and complete destination information is available for both CRM types, the Allocate call will try to establish a logical connection using only the destination information for the CRM type being used. Characteristic Values and Send-Receive Modes Table 7 lists the values of conversation characteristics that are not applicable to a FULL-DUPLEX CONVERSATION, a conversation with send_receive_mode set to CM_FULL_DUPLEX. Table 8 lists the values of conversation characteristics that are not applicable to a HALF-DUPLEX CONVERSATION, a conversation with send_receive_mode set to CM_HALF_DUPLEX. +--------------------------------------------------------------------+ | Table 7. Conversation Characteristic Values that Cannot Be Set for | | Full-Duplex Conversations | +----------------------+---------------------------------------------+ | CHARACTERISTIC NAME | INAPPLICABLE VALUES | +----------------------+---------------------------------------------+ | confirmation_urgency | all values | +----------------------+---------------------------------------------+ | | | +----------------------+---------------------------------------------+ | deallocate_type | CM_DEALLOCATE_CONFIRM (for conversations | | | using an LU 6.2 CRM only) | +----------------------+---------------------------------------------+ | | | +----------------------+---------------------------------------------+ | error_direction | all values | +----------------------+---------------------------------------------+ | | | +----------------------+---------------------------------------------+ | prepare_to_receive_ty|eall values | +----------------------+---------------------------------------------+ | | | +----------------------+---------------------------------------------+ | processing_mode | all values | +----------------------+---------------------------------------------+ | | | +----------------------+---------------------------------------------+ | send_type | CM_SEND_AND_CONFIRM | +----------------------+---------------------------------------------+ | | CM_SEND_AND_PREP_TO_RECEIVE | +----------------------+---------------------------------------------+ | | | +----------------------+---------------------------------------------+ | sync_level | CM_CONFIRM | +----------------------+---------------------------------------------+ | | CM_SYNC_POINT | +----------------------+---------------------------------------------+ | | | +----------------------+---------------------------------------------+ +--------------------------------------------------------------------+ | Table 8. Conversation Characteristic Values that Cannot Be Set for | | Half-Duplex Conversations | +----------------------+---------------------------------------------+ | CHARACTERISTIC NAME | INAPPLICABLE VALUES | +----------------------+---------------------------------------------+ | sync_level | CM_SYNC_POINT_NO_CONFIRM (for conversations | | | using an LU 6.2 CRM only) | +----------------------+---------------------------------------------+ | | | +----------------------+---------------------------------------------+ On a conversation with a particular send-receive mode: o The program will receive a CM_PROGRAM_PARAMETER_CHECK if it attempts to set any characteristic value that is not applicable to that send-receive mode. o The Set_Send_Receive_Mode call will return with CM_PROGRAM_PARAMETER_CHECK if a previously set deallocate_type, send_type, or sync_level characteristic value is not applicable to the send-receive mode specified on the call. The following calls cannot be issued on full-duplex conversations and will receive a CM_PROGRAM_PARAMETER_CHECK return code on a full-duplex conversation: o Confirm o Confirmed (for conversations using an LU 6.2 CRM only) o Prepare_To_Receive o Request_To_Send o Set_Confirmation_Urgency o Set_Error_Direction o Set_Prepare_To_Receive_Type o Set_Processing_Mode o Test_Request_To_Send_Received Automatic Conversion of Characteristics Some conversation characteristics affect only the function of the local program; the remote program is not aware of their settings. An example of this kind of conversation characteristic is receive_type. Other conversation characteristics, however, are transmitted to the remote program or CRM and, thus, affect both ends of the conversation. For example, the local CRM transmits the TP_name characteristic to the remote CRM as part of the conversation startup process. When an LU 6.2 CRM is used, CPI Communications requires that these transmitted characteristics be encoded as EBCDIC characters. For this reason, CPI Communications automatically converts these characteristics to EBCDIC when they are used as parameters on CPI Communications calls on non-EBCDIC systems. When an OSI TP CRM is used, the transfer syntax is negotiated by the underlying support. CPI Communications automatically converts these characteristics to the transfer syntax when they are used as parameters on CPI Communications calls. This means programmers can use the native encoding of the local system when specifying these characteristics on Set calls. Likewise, when these characteristics are returned by Extract calls, they are represented in the local system's native encoding. The following conversation characteristics may be automatically converted by CPI Communications: AE_qualifier Specified on the Extract_AE_Qualifier and Set_AE_Qualifier calls. AP_Title Specified on the Extract_AP_Title and Set_AP_Title calls. application_context_name Specified on the Extract_Application_Context_Name and Set_Application_Context_Name calls. initialization_data Specified on the Extract_Initialization_Data and Set_Initialization_Data calls. log_data Specified on the Set_Log_Data call. mode_name Specified on the Extract_Mode_Name and Set_Mode_Name calls. partner_LU_name Specified on the Extract_Partner_LU_Name and Set_Partner_LU_Name calls. security_password Specified on the Set_Conversation_Security_Password call. security_user_ID Specified on the Extract_Security_User_ID and Set_Conversation_Security_User_ID calls. TP_name Specified on the Set_TP_Name and Extract_TP_Name calls. --------------------- Concurrent Operations CPI Communications provides for concurrent call operations (multiple call operations in progress simultaneously) on a conversation by grouping calls in logical associations or CONVERSATION QUEUES. Calls associated with one queue are processed independently of calls associated with other queues or with no queue. Table 9 shows the different conversation queues and calls associated with them. The send-receive mode of the conversation determines what queues are available for the conversation. Table 9 shows the send-receive modes for which the conversation queues are available. A program may initiate concurrent operations by using multiple program threads on systems with multi-threading support. See "Using Multiple Program Threads." Alternatively, a program may use queue-level non-blocking support to regain control when a call operation on a queue cannot complete immediately. The call operation remains in progress. The program may issue a call associated with another queue or perform other processing. Queue-level non-blocking is described in "Queue-Level Non-Blocking." Only one call operation is allowed to be in progress on a given conversation queue at a time. If a program issues a call associated with a queue that has a previous call operation still in progress, the later call returns with the CM_OPERATION_NOT_ACCEPTED return code. Using Multiple Program Threads While CPI Communications itself does not provide multi-threading support, some implementations are designed to work with multi-threading support in the base operating system and to allow multi-threaded programs to use CPI Communications. On such a system, a program may create separate threads to initiate concurrent operations on a conversation. For example, a program may create separate threads to handle the send and receive operations on a full-duplex conversation, where the Send-Data and Receive calls are associated with the Send and Receive queues, respectively. Each thread's operation proceeds independently; in particular, the sending thread may continue to send data to the partner program while the receiving thread is waiting for a Receive call to complete. It is the responsibility of the program to ensure that action taken by one thread does not interfere with action taken by another thread. For example, unexpected results may occur if two threads issue calls associated with the same queue, or if one thread modifies the value of a conversation characteristic that affects the processing of a call issued by another thread. +--------------------------------------------------------------------------------------------------------------------------------+ | Table 9. Conversation Queues - Associated Calls and Send-Receive Modes | +-------------------------------+----------------------------------------------------------------+-------------------------------+ | CONVERSATION QUEUE | CPI COMMUNICATIONS CALLS | SEND-RECEIVE MODE | +-------------------------------+----------------------------------------------------------------+-------------------------------+ | Initialization | Accept_Incoming | Half-duplex and full-duplex | | | Allocate | | | | Set_AE_Qualifier | | | | Set_Allocate_Confirm | | | | Set_AP_Title | | | | Set_Application_Context_Name | | | | Set_Conversation_Security_Password | | | | Set_Conversation_Security_Type | | | | Set_Conversation_Security_User_ID | | | | Set_Conversation_Type | | | | Set_Initialization_Data | | | | Set_Mode_Name | | | | Set_Partner_ID | | | | Set_Partner_LU_Name | | | | Set_Return_Control | | | | Set_Send_Receive_Mode | | | | Set_Sync_Level | | | | Set_Transaction_Control | | | | Set_TP_Name | | +-------------------------------+----------------------------------------------------------------+-------------------------------+ | Send | Confirmed | Full-duplex | | | Deallocate | | | | Deferred_Deallocate | | | | Flush | | | | Include_Partner_In_Transaction | | | | Prepare | | | | Send_Data | | | | Send_Error | | | | Set_Deallocate_Type | | | | Set_Log_Data | | | | Set_Prepare_Data_Permitted | | | | Set_Send_Type | | +-------------------------------+----------------------------------------------------------------+-------------------------------+ | Receive | Receive | Full-duplex | | | Set_Fill | | | | Set_Receive_Type | | +-------------------------------+----------------------------------------------------------------+-------------------------------+ | Send-Receive | Confirm | Half-duplex | | | Confirmed | | | | Deallocate | | | | Deferred_Deallocate | | | | Flush | | | | Include_Partner_In_Transaction | | | | Prepare | | | | Prepare_To_Receive | | | | Receive | | | | Send_Data | | | | Send_Error | | | | Set_Confirmation_Urgency | | | | Set_Deallocate_Type | | | | Set_Error_Direction | | | | Set_Fill | | | | Set_Log_Data | | | | Set_Prepare_Data_Permitted | | | | Set_Prepare_To_Receive_Type | | | | Set_Receive_Type | | | | Set_Send_Type | | +-------------------------------+----------------------------------------------------------------+-------------------------------+ | Expedited-Send | Request_To_Send (Half-duplex only) | Half-duplex and full-duplex | | | Send_Expedited_Data | | +-------------------------------+----------------------------------------------------------------+-------------------------------+ | Expedited-Receive | Receive_Expedited_Data | Half-duplex and full-duplex | +-------------------------------+----------------------------------------------------------------+-------------------------------+ | Determined by the queue named | Set_Queue_Callback_Function | Half-duplex and full-duplex | | on the call | Set_Queue_Processing_Mode | | +-------------------------------+----------------------------------------------------------------+-------------------------------+ NOTE: The following calls are not associated with any queue. o Accept_Conversation o Cancel_Conversation o Convert_Incoming o Convert_Outgoing o Extract_* o Initialize_Conversation o Initialize_For_Incoming o Release_Local_TP_Name o Set_Begin_Transaction o Set_Processing_Mode o Specify_Local_TP_Name o Test_Request_To_Send_Received o Wait_For_Conversation o Wait_For_Completion ----------------------- Non-Blocking Operations CPI Communications supports two processing modes for its calls: o BLOCKING--The call operation completes before control is returned to the program. If the call operation is unable to complete immediately, it "blocks," and the program is forced to wait until the call operation finishes. While waiting, the program is unable to perform other processing or to communicate with any of its other partners. o NON-BLOCKING--If possible, the call operation completes immediately and control is returned to the program. However, if while processing the call CPI Communications determines that the call operation cannot complete immediately, control is returned to the program even though the call operation has not completed. The call operation remains in progress, and completion of the call operation occurs at a later time. NOTE: This section describes non-blocking operations for a single-threaded program, but similar considerations apply to a program issuing CPI Communications calls on multiple threads. Specifically, only the thread that issues a call is blocked if the call is processed in blocking mode and cannot complete immediately. When the program uses non-blocking support, control is returned to the calling thread if the call operation cannot complete immediately. That thread may then perform other processing, including issuing calls on the same conversation. When the non-blocking processing mode applies to a call and the call operation cannot complete immediately, CPI Communications returns control to the program with a return code of CM_OPERATION_INCOMPLETE. The call operation remains in progress as an OUTSTANDING OPERATION, and the program is allowed to perform other processing. The following calls can return the CM_OPERATION_INCOMPLETE return code: +--------------------------------------------------------------------+ | Table 10. Calls Returning CM_OPERATION_INCOMPLETE | +--------------------------------------------------------------------+ | Accept_Incoming | | Allocate | | Confirm | | Confirmed | | Deallocate | | Deferred_Deallocate | | Flush | | Include_Partner_In_Transaction | | Prepare | | Prepare_To_Receive | | Receive | | Receive_Expedited_Data | | Request_To_Send | | Send_Data | | Send_Error | | Send_Expedited_Data | +--------------------------------------------------------------------+ CPI Communications provides two levels of support for programs using the non-blocking processing mode: CONVERSATION level and QUEUE level. These are discussed in the sections below. Until a program chooses a non-blocking level for a conversation, all calls on the conversation are processed in blocking mode. NOTE: A program may choose to use conversation-level non-blocking or queue-level non-blocking, but not both, on a given conversation. Once set, the level of non-blocking used on a conversation cannot be changed. Additionally, the level of non-blocking used depends on the send_receive_mode characteristic. The program can choose to use either level of non-blocking support on a half-duplex conversation. However, the program can use only queue-level non-blocking on a full-duplex conversation. Conversation-Level Non-Blocking Conversation-level non-blocking allows only one outstanding operation on a conversation at a time. The program chooses conversation-level non-blocking by issuing the Set_Processing_Mode (CMSPM) call to set the processing_mode conversation characteristic. The processing_mode characteristic indicates whether subsequent calls on the conversation are to be processed in blocking or non-blocking mode. If processing_mode is set to CM_NON_BLOCKING and a call receives the CM_OPERATION_INCOMPLETE return code, the call operation becomes an outstanding operation on the conversation. The program must issue the Wait_For_Conversation (CMWAIT) call to determine when the outstanding operation is completed and to retrieve the return code for that operation. CPI Communications keeps track of all conversations using conversation-level non-blocking and having an outstanding operation, and responds to a subsequent Wait_For_Conversation call with the conversation identifier of one of those conversations when the operation on it completes. With conversation-level non-blocking, only one call operation is allowed to be in progress on the conversation at a time. Any call (except Cancel_Conversation) issued on the conversation while the previous call operation is still in progress gets the CM_OPERATION_NOT_ACCEPTED return code. A conversation does not change conversation state when a call on that conversation gets the CM_OPERATION_INCOMPLETE return code. Instead, the state transition occurs when a subsequent Wait_For_Conversation call completes and indicates that the conversation has a completed operation. The conversation enters the state called for by a combination of the operation that completed, the return code for that operation (the conversation_return_code value returned on the Wait_For_Conversation call), and the other factors that determine state transitions. Queue-Level Non-Blocking In contrast to conversation-level non-blocking, queue-level non-blocking allows more than one outstanding operation per conversation. CPI Communications allows programs using queue-level non-blocking to have one outstanding operation per queue simultaneously. With queue-level non-blocking, the processing mode is set on a queue basis. The program chooses queue-level non-blocking by issuing the Set_Queue_Processing_Mode (CMSQPM) or Set_Queue_Callback_Function (CMSQCF) call to set the queue processing mode for a specified queue. Until the program sets the processing mode for a queue, all calls associated with that queue are processed in blocking mode. Calls not associated with any queue are processed in blocking mode and are always completed before control is returned to the program. Working with Wait Facility When using the Set_Queue_Processing_Mode call, the program manages multiple outstanding operations with OUTSTANDING-OPERATION IDENTIFIERS, or OOIDs. CPI Communications creates and maintains a unique OOID for each queue. Additionally, a program may choose to associate a USER FIELD with an outstanding operation. The user field is provided as an aid to programming, and might be used to contain, for example, the address of a data structure with return parameters for an outstanding operation. When a call receives the CM_OPERATION_INCOMPLETE return code, the call operation becomes an outstanding operation on the conversation queue with which the call is associated. The program must issue the Wait_For_Completion call to wait for the operation to complete and to obtain the corresponding OOID and user field. Wait Facility Scenario Here is a scenario of how a program might use queue-level non-blocking on a full-duplex conversation: 1. The program uses the Set_Queue_Processing_Mode call to set the processing mode for the Send queue to non-blocking. It also supplies a user field that contains the address of a parameter list for the Send_Data call and receives back an OOID from CPI Communications that is unique to the Send queue. 2. The program next uses the Set_Queue_Processing_Mode call to set the processing mode for the Receive queue to non-blocking. This time it supplies a user field that contains the address of a parameter list for the Receive call. It receives back an OOID from CPI Communications that is unique to the Receive queue. 3. The program issues a Send_Data call, which returns CM_OPERATION_INCOMPLETE, followed by a Receive call, which also returns CM_OPERATION_INCOMPLETE. If the program attempted to issue another call associated with either queue, it would receive a CM_OPERATION_NOT_ACCEPTED return code because there can be only one outstanding operation at a time per queue. Note that when a call on a conversation receives a CM_OPERATION_INCOMPLETE return code, the conversation does not change state. 4. The program can now issue a Wait_For_Completion call to wait for both outstanding operations at the same time. It does this by specifying a list of OOIDs for the outstanding operations it wants to wait for. When the Wait_For_Completion call returns, it indicates which operations have completed (if any), along with a list of user fields. The state transition triggered by the completed operation occurs when the Wait_For_Completion call completes. 5. The program uses the parameter-list address in the user field to determine the results of a given completed operation. Using Callback Function An alternative use of queue-level non-blocking is to establish a CALLBACK FUNCTION and a user field for the conversation queue using the Set_Queue_Callback_Function (CMSQCF) call. When an outstanding operation completes, the program is interrupted and the callback function is called (passing the user field and call ID for the completed operation as input data). See "Set_Queue_Callback_Function (CMSQCF)" for details. When the callback function returns, the program continues from where it was interrupted. Canceling Outstanding Operations The program may use the Cancel_Conversation (CMCANC) call to end a conversation. The call terminates all the call operations in progress on the conversation. The terminated call operations do not return a return code. Non-Blocking Calls and Context Management In general, the program's current context is set by node services to the newly created context when an Accept_Conversation or Accept_Incoming call completes successfully with a return code of CM_OK. However, if Accept_Incoming is issued as a non-blocking call and returns with a CM_OPERATION_INCOMPLETE return code, the program's current context will not be changed. A new context is not created until the Accept_Incoming call operation subsequently completes successfully as a result of the Wait_For_Conversation or Wait_For_Completion call. The program can then use the Extract_Conversation_Context call to determine the context to which the conversation was assigned. Because Wait_For_Conversation and Wait_For_Completion do not cause a change of context, the program is responsible for issuing the appropriate node services call to establish the correct current context. --------------------- Conversation Security Many systems control access to system resources through security parameters associated with a request for access to those resources. In particular, a CRM working in conjunction with node services can control access to its programs and conversation resources using access security information carried in the conversation startup request. The conversation startup request contains one of the following forms of access security information: o No access security information o The user ID of the user on whose behalf access to the remote program is requested o The user ID and a password for the user on whose behalf access to the remote program is requested o Authentication tokens generated by a distributed security service for the user on whose behalf access to the remote program is requested. The access security information in the conversation startup request depends on the values of the security conversation characteristics and comes from the following sources: o The system administrator can provide security parameters in the side information. These are used to establish security characteristics when the program issues the Initialize_Conversation call. o The program can override the values from side information and set the security characteristics directly using the Set_Conversation_Security_Type, Set_Conversation_Security_User_ID, and Set_Conversation_Security_Password calls. o When the program allocates a conversation with conversation_security_type set to CM_SECURITY_SAME, CM_SECURITY_DISTRIBUTED or CM_SECURITY_MUTUAL, the security parameters for the program's current context are used to generate the access security information. This may involve the use of a distributed security service. The access security information is sent to the remote CRM in the conversation startup request. The required_user_name_type field in the program binding may be used to specify the type of user name required by the remote system. o "NONE" indicates the remote system accepts and processes requests that do not contain access security information. o "LOCAL" indicates the remote system requires a user ID that is valid at the remote system. User IDs may be sent for CM_SECURITY_PROGRAM, CM_SECURITY_PROGRAM_STRONG, CM_SECURITY_SAME, CM_SECURITY_DISTRIBUTED and CM_SECURITY_MUTUAL requests. o "PRINCIPAL" indicates the remote system requires a principal name from the distributed security service. Principal names are sent for CM_SECURITY_SAME, CM_SECURITY_DISTRIBUTED and CM_SECURITY_MUTUAL requests. Certain combinations of values of conversation_security_type and required_user_name_type field (from the program binding) cause the local CRM to reject the Allocate call with a return_code of CM_SECURITY_NOT_SUPPORTED. Table 11 shows the incompatible values. +--------------------------------------------------------------------+ | Table 11. Incompatible conversation_security_type and | | required_user_name_type Values | +----------------------------------+---------------------------------+ | REQUIRED_USER_NAME_TYPE | CONVERSATION_SECURITY_TYPE | +----------------------------------+---------------------------------+ | LOCAL | CM_SECURITY_NONE | +----------------------------------+---------------------------------+ | PRINCIPAL | CM_SECURITY_NONE | +----------------------------------+---------------------------------+ | PRINCIPAL | CM_SECURITY_PROGRAM | +----------------------------------+---------------------------------+ | PRINCIPAL | CM_SECURITY_PROGRAM_STRONG | +----------------------------------+---------------------------------+ In addition to supporting access security information on conversation startup requests, the OSI standard includes the ability to perform re-authentication during a conversation. A program requests re-authentication by making OSI TP implementation-specific calls to node services. Security protocols for OSI TP CRMs are defined in standard ISO/IEC 11586 part 1, Generic Upper Layers Security. For an OSI TP CRM, the application context identifies to the program developer which conversation security type should be used. When a program is started as a result of an incoming conversation startup request or when an already started program accepts an incoming conversation, node services uses the access security information to validate the user's access to the program and to establish the security parameters for the resulting context. The program that accepts an incoming conversation may examine the security_user_ID for that conversation by issuing the Extract_Security_User_ID call. --------------- Data Conversion Program-to-program communication typically involves a variety of computer systems and languages. Because each system or language has its own way of representing equivalent data, data conversion support is needed for the application program to overcome the differences in data representations from different environments. With the Convert_Incoming and Convert_Outgoing calls, CPI Communications provides data conversion for character data in the user buffer. These calls may be used to write a program that is independent of the encoding of the partner program: o Before issuing a Send_Data call, the program may issue the Convert_Outgoing call to convert the application data in the local encoding to the corresponding EBCDIC hexadecimal codes. o After receiving data from a RECEIVE call, the program may issue the Convert_Incoming call to convert the EBCDIC hexadecimal codes to the corresponding local representation of the data. These two calls provide limited data conversion support for character data that belongs to character set 00640, as specified in Appendix A, "Variables and Characteristics." See the usage notes under "Convert_Incoming (CMCNVI)" and "Convert_Outgoing (CMCNVO)." ------------------------------------ Program Flow--States and Transitions As implied throughout the discussion so far, a program written to make use of CPI Communications is written with the remote program in mind. The local program issues a CPI Communications call for a particular conversation knowing that, in response, the remote program will issue another CPI Communications call (or its equivalent) for that same conversation. To explain this two-sided programming scenario, CPI Communications uses the concept of a conversation state. The STATE that a conversation is in determines what the next set of actions may be. When a conversation leaves a state, it makes a TRANSITION from that state to another. A CPI Communications conversation can be in one of the following states: +----------------------+----------------------------------------------------+ | STATE | DESCRIPTION | +----------------------+----------------------------------------------------+ | RESET | There is no conversation for this conversation_ID. | +----------------------+----------------------------------------------------+ | INITIALIZE | Initialize_Conversation has completed successfully | | | and a conversation_ID has been assigned for this | | | conversation. | +----------------------+----------------------------------------------------+ | SEND | The program is able to send data on this | | | conversation. This state is applicable only for | | | half-duplex conversations. | +----------------------+----------------------------------------------------+ | RECEIVE | The program is able to receive data on this | | | conversation. This state is applicable only for | | | half-duplex conversations. | +----------------------+----------------------------------------------------+ | SEND-PENDING | The program has received both data and send | | | control on the same Receive call. See "Example 8: | | | Error Direction and Send-Pending State" for a | | | discussion of the SEND-PENDING state. This state | | | is applicable only for half-duplex conversations. | +----------------------+----------------------------------------------------+ | CONFIRM | A confirmation request has been received on this | | | conversation; that is, the remote program issued | | | either a Confirm call or a Send_Data call with | | | send_type set to CM_SEND_AND_CONFIRM, and is | | | waiting for the local program to issue Confirmed. | | | After responding with Confirmed, the local | | | program's end of the conversation enters RECEIVE | | | state. This state is applicable only for | | | half-duplex conversations. | +----------------------+----------------------------------------------------+ | CONFIRM-SEND | A confirmation request and send control have both | | | been received on this conversation; that is, the | | | remote program issued a Prepare_To_Receive call | | | with the prepare_to_receive_type set to | | | CM_PREP_TO_RECEIVE_SYNC_LEVEL and either the | | | sync_level is CM_CONFIRM, or the sync_level is | | | CM_SYNC_POINT and the conversation is not | | | currently included in a transaction. After | | | responding with Confirmed, the local program's end | | | of the conversation enters SEND state. This state | | | is applicable only for half-duplex conversations. | +----------------------+----------------------------------------------------+ | CONFIRM-DEALLOCATE | A confirmation request and deallocation | | | notification have both been received on this | | | conversation. For a half-duplex conversation, the | | | remote program issued a Deallocate call in one of | | | the following situations: | | | | | | o deallocate_type is set to | | | CM_DEALLOCATE_CONFIRM. | | | o deallocate_type is set to | | | CM_DEALLOCATE_SYNC_LEVEL and sync_level is set | | | to CM_CONFIRM. | | | o deallocate_type is set to | | | CM_DEALLOCATE_SYNC_LEVEL, sync_level is set to | | | CM_SYNC_POINT, and the conversation is not | | | currently included in a transaction. | | | | | | For a full-duplex conversation, the remote program | | | issued a Deallocate call with the deallocate_type | | | set to CM_DEALLOCATE_CONFIRM. | +----------------------+----------------------------------------------------+ | INITIALIZE-INCOMING | Initialize_For_Incoming has completed successfully | | | and a conversation_ID has been assigned for this | | | conversation. The program may accept an incoming | | | conversation by issuing Accept_Incoming on this | | | conversation. | +----------------------+----------------------------------------------------+ | SEND-RECEIVE | The program can send and receive data on this | | | conversation. This state is applicable only for | | | full-duplex conversations. | +----------------------+----------------------------------------------------+ | SEND-ONLY | The program can only send data on this | | | conversation. This state is applicable only for | | | full-duplex conversations. | +----------------------+----------------------------------------------------+ | RECEIVE-ONLY | The program can only receive data on this | | | conversation. This state is applicable only for | | | full-duplex conversations. | +----------------------+----------------------------------------------------+ A conversation starts out in RESET state and moves into other states, depending on the calls made by the program for that conversation and the information received from the remote program. The current state of a conversation determines what calls the program can or cannot make. Since there are two programs for each conversation (one at each end), the state of the conversation as seen by each program may be different. The state of the conversation depends on which end of the conversation is being discussed. Consider a half-duplex conversation where Program A is sending data to Program C. Program A's end of the conversation is in SEND state, but Program C's end is in RECEIVE state. NOTE: CPI Communications keeps track of a conversation's current state, as should the program. If a program issues a CPI Communications call for a conversation that is not in a valid state for the call, CPI Communications will detect this error and return a return_code value of CM_PROGRAM_STATE_CHECK. The following additional states are required for programs using a sync_level of CM_SYNC_POINT or CM_SYNC_POINT_NO_CONFIRM: o DEFER-RECEIVE (for half-duplex conversations only) o DEFER-DEALLOCATE o PREPARED o SYNC-POINT o SYNC-POINT-SEND (for half-duplex conversations only) o SYNC-POINT-DEALLOCATE "Support for Resource Recovery Interfaces" discusses synchronization point processing and describes these additional states. For a complete listing of program calls, possible states, and state transitions, see Appendix C, "State Tables." ---------------------------------------- Support for Resource Recovery Interfaces This section describes how application programs can use CPI Communications in conjunction with a resource recovery interface. A RESOURCE RECOVERY INTERFACE provides access to services and facilities that use two-phase commit protocols to coordinate changes to distributed resources. While CPI Communications' sync point functions can be used with other resource recovery interfaces, this book describes how CPI Communications works with the Systems Application Architecture* (SAA*) and X/Open TX resource recovery interfaces. For information about performing synchronization point processing with the SAA resource recovery interface, see SAA Common Programming Interface: Resource Recovery Reference (SC31-6821) and read the documentation for the appropriate operating environment. For information on using the X/Open TX resource recovery interface, see Distributed Transaction Processing: The TX (Transaction Demarcation) Specification, published by X/Open Company Limited, ISBN: 1-872630-65-0. NOTE: The following discussion is intended for programmers using CPI Communications advanced functions. Readers not interested in a high degree of synchronization need not read this section. A CPI Communications conversation can be used with a resource recovery interface only if its sync_level characteristic is set to CM_SYNC_POINT or CM_SYNC_POINT_NO_CONFIRM. This kind of conversation is called a PROTECTED CONVERSATION. Coordination with Resource Recovery Interfaces A program communicates with a resource recovery interface by establishing SYNCHRONIZATION POINTS, or SYNC POINTS, in the program logic. A sync point is a reference point during transaction processing to which resources can be restored if a failure occurs. The program uses a resource recovery interface's commit call to establish a new sync point or a resource recovery interface's backout call to return to a previous sync point. The processing and the changes to resources that occur between one sync point and the next are collectively referred to as a TRANSACTION or a LOGICAL UNIT OF WORK. In turn, the resource recovery interface invokes a component of the operating environment called a SYNC POINT MANAGER (SPM) or a TRANSACTION MANAGER. The SPM coordinates the commit or backout processing among all the protected resources involved in the sync point transaction. The commitment or backout of protected resources is done on a context basis. Only those changes to protected resources, including protected conversations, that belong to the program's current context when the commit or backout call is issued are committed or backed out. Therefore, prior to issuing the commit or backout call, the program must ensure that the current context is the context for which the commit or backout is intended. For example, Program S in Figure 7 has two distinct contexts, one for Program D and one for Program E. If Program S decides to commit or back out the work that it has done for Program D, it must set the current context to ensure that only the resources associated with Program D will be affected. For more information on contexts, see "Contexts and Context Management." Take-Commit and Take-Backout Notifications When a program issues a Prepare, commit, or backout call, CPI Communications cooperates with the resource recovery interface by passing synchronization information to its conversation partner. This sync point information consists of take-commit and take-backout notifications. When the program issues a Prepare or commit call, CPI Communications returns a TAKE-COMMIT NOTIFICATION to the partner program in the status_received parameter for a Receive call issued by the partner. The sequence of CPI Communications calls issued before the Prepare or resource recovery commit call determines the value of the take-commit notification returned to the partner program. In addition to requesting that the partner program establish a sync point, the take-commit notification also contains conversation state transition information. Table 12 and Table 13 show the status_received values that CPI Communications uses as take-commit notifications, the conditions under which each of the values may be received, and the state changes resulting from their receipt. +--------------------------------------------------------------------+ | Table 12. Possible Take-Commit Notifications for Half-Duplex | | Conversations | +----------------------------------+---------------------------------+ | status_received VALUE | CONDITIONS FOR RECEIPT | +----------------------------------+---------------------------------+ | CM_TAKE_COMMIT | The partner program issued a | | | commit call, or a Prepare call | | | with the prepare_data_permitted | | | conversation characteristic set | | | to | | | CM_PREPARE_DATA_NOT_PERMITTED, | | | while its end of the | | | conversation was in SEND or | | | SEND-PENDING state. The local | | | program's end of the | | | conversation is in SYNC-POINT | | | state and will be placed back | | | in RECEIVE state once the local | | | program issues a successful | | | commit call. | +----------------------------------+---------------------------------+ | CM_TAKE_COMMIT_SEND | The partner program issued a | | | commit call, or a Prepare call | | | with the prepare_data_permitted | | | conversation characteristic set | | | to | | | CM_PREPARE_DATA_NOT_PERMITTED, | | | while its end of the | | | conversation was in | | | DEFER-RECEIVE state. The local | | | program's end of the | | | conversation is in | | | SYNC-POINT-SEND state and will | | | be placed in SEND state once | | | the local program issues a | | | successful commit call. | +----------------------------------+---------------------------------+ | CM_TAKE_COMMIT_DEALLOCATE | The partner program issued a | | | commit call, or a Prepare call | | | with the prepare_data_permitted | | | conversation characteristic set | | | to | | | CM_PREPARE_DATA_NOT_PERMITTED, | | | either while its end of the | | | conversation was in | | | DEFER-DEALLOCATE state or after | | | issuing a Deferred_Deallocate | | | call. The local program's end | | | of the conversation is in | | | SYNC-POINT-DEALLOCATE state and | | | will be placed in RESET state | | | once the local program issues a | | | successful commit call. | +----------------------------------+---------------------------------+ | CM_TAKE_COMMIT_DATA_OK | The partner program issued a | | | Prepare call with the | | | prepare_data_permitted | | | conversation characteristic set | | | to CM_PREPARE_DATA_PERMITTED | | | while its end of the | | | conversation was in SEND or | | | SEND-PENDING state. The local | | | program's end of the | | | conversation is in SYNC-POINT | | | state and will be placed back | | | in RECEIVE state once the local | | | program issues a successful | | | commit call. | +----------------------------------+---------------------------------+ | CM_TAKE_COMMIT_SEND_DATA_OK | The partner program issued a | | | Prepare call with the | | | prepare_data_permitted | | | conversation characteristic set | | | to CM_PREPARE_DATA_PERMITTED | | | while its end of the | | | conversation was in | | | DEFER-RECEIVE state. The local | | | program's end of the | | | conversation is in | | | SYNC-POINT-SEND state and will | | | be placed in SEND state once | | | the local program issues a | | | successful commit call. | +----------------------------------+---------------------------------+ | CM_TAKE_COMMIT_DEALLOC_DATA_OK | The partner program issued a | | | Prepare call with the | | | prepare_data_permitted | | | conversation characteristic set | | | to CM_PREPARE_DATA_PERMITTED, | | | either while its end of the | | | conversation was in | | | DEFER-DEALLOCATE state or after | | | issuing a Deferred_Deallocate | | | call. The local program's end | | | of the conversation is in | | | SYNC-POINT-DEALLOCATE state and | | | will be placed in RESET state | | | once the local program issues a | | | successful commit call. | +----------------------------------+---------------------------------+ | | | +----------------------------------+---------------------------------+ +--------------------------------------------------------------------+ | Table 13. Possible Take-Commit Notifications for Full-Duplex | | Conversations | +----------------------------------+---------------------------------+ | status_received VALUE | CONDITIONS FOR RECEIPT | +----------------------------------+---------------------------------+ | CM_TAKE_COMMIT | The partner program issued a | | | commit call, or the | | | conversation is using an LU 6.2 | | | CRM and the partner program | | | issued a Prepare call, while | | | its end of the conversation was | | | in SEND-RECEIVE state. The | | | local program's end of the | | | conversation is in SYNC-POINT | | | state and will be placed back | | | in SEND-RECEIVE state once the | | | local program issues a | | | successful commit call. | +----------------------------------+---------------------------------+ | CM_TAKE_COMMIT_DEALLOCATE | The partner program issued a | | | commit call, or the | | | conversation is using an LU 6.2 | | | CRM and the partner program | | | issued a Prepare call, either | | | while its end of the | | | conversation was in | | | DEFER-DEALLOCATE state or after | | | issuing a Deferred_Deallocate | | | call. The local program's end | | | of the conversation is in | | | SYNC-POINT-DEALLOCATE state and | | | will be placed in RESET state | | | once the local program issues a | | | successful commit call. | +----------------------------------+---------------------------------+ | CM_TAKE_COMMIT_DATA_OK | The conversation is using an | | | OSI TP CRM, and the partner | | | program issued a Prepare call | | | while its end of the | | | conversation was in | | | SEND-RECEIVE state. The local | | | program's end of the | | | conversation is in SYNC-POINT | | | state and will be placed back | | | in SEND-RECEIVE state once the | | | local program issues a | | | successful commit call. | +----------------------------------+---------------------------------+ | CM_TAKE_COMMIT_DEALLOC_DATA_OK | The conversation is using an | | | OSI TP CRM, and the partner | | | program issued a Prepare call, | | | either while its end of the | | | conversation was in | | | DEFER-DEALLOCATE state or after | | | issuing a Deferred_Deallocate | | | call. The local program's end | | | of the conversation is in | | | SYNC-POINT-DEALLOCATE state and | | | will be placed in RESET state | | | once the local program issues a | | | successful commit call. | +----------------------------------+---------------------------------+ | | | +----------------------------------+---------------------------------+ When the program issues a backout call, or when a system failure or a problem with a protected resource causes the SPM to initiate a backout operation, CPI Communications returns a TAKE-BACKOUT NOTIFICATION to the partner program. CPI Communications returns this notification as one of the following values in the return_code parameter: o CM_TAKE_BACKOUT o CM_DEALLOCATED_ABEND_BO o CM_DEALLOCATED_ABEND_SVC_BO (basic conversations only) o CM_DEALLOCATED_ABEND_TIMER_BO (basic conversations only) o CM_RESOURCE_FAIL_NO_RETRY_BO o CM_RESOURCE_FAILURE_RETRY_BO o CM_DEALLOCATED_NORMAL_BO CPI Communications can return a take-backout notification on any of the following calls issued by the partner program: o Confirm o Deallocate(S)(4) o Extract_Conversation_State o Flush o Prepare o Prepare_To_Receive o Receive o Send_Data o Send_Error The Backout-Required Condition Upon receipt of a take-backout notification on a protected conversation, the conversation's context is placed in the BACKOUT-REQUIRED condition. This condition is not a conversation state, because it applies to all of the program's protected resources for that context, possibly including multiple conversations. A context may be placed in the BACKOUT-REQUIRED condition in one of the following ways: o When CPI Communications returns a take-backout notification o When the program issues a Cancel_Conversation call, a Deallocate call deallocate_type set to CM_DEALLOCATE_ABEND, or when a Send_Data call with send_type set to CM_SEND_AND_DEALLOCATE and deallocate_type set to CM_DEALLOCATE_ABEND. When one of these calls is successfully issued, CPI Communications places the context in the BACKOUT-REQUIRED condition. When a context is placed in the BACKOUT-REQUIRED condition, the program should issue a resource recovery backout call. Until it issues a backout call, the program will be unable to successfully issue any of the following CPI Communications calls for any of its protected conversations within that context. The CM_PROGRAM_STATE_CHECK return code will be returned if the program issues any of the following calls: o Allocate o Confirm o Confirmed o Deallocate (unless deallocate_type is set to CM_DEALLOCATE_ABEND) o Flush o Prepare o Prepare_To_Receive o Receive o Request_To_Send o Send_Data o Send_Error o Test_Request_To_Send_Received Responses to Take-Commit and Take-Backout Notifications A program usually issues a commit or backout call in response to a take-commit notification, and a backout call in response to a take-backout notification. In some cases, however, the program may respond to one of these notifications with a CPI Communications call instead of a commit or backout call. Table 14 shows the calls a program can use to respond to take-commit and take-backout notifications, the result of issuing each call, and any further action required by the program. +---------------------------------------------------------------------------+ | Table 14. Responses to Take-Commit and Take-Backout Notifications | +----------+----------+---------------------+---------------------+---------+ | NOTIFI- | POSSIBLE | REASON FOR RESPONSE | RESULT OF RESPONSE | FURTHER | | CATION | RESPONSE | | | ACTION | | RECEIVED | | | | REQUIRED| +----------+----------+---------------------+---------------------+---------+ | Take- | Commit | The program agrees | The commit request | None | | Commit | | that it can commit | is spread to other | | | (1) | | (or has committed) | programs in the | | | | | all protected | transaction. | | | | | resources. | | | | +----------+---------------------+---------------------+---------+ | | Backout | The program | A backout request | None | | | | disagrees with the | is spread to other | | | | | commit request. | programs in the | | | | | | transaction, | | | | | | including the | | | | | | program that issued | | | | | | the original commit | | | | | | call. | | | +----------+---------------------+---------------------+---------+ | | Deallo- | The program has | The conversation's | The | | | cate | detected an error | context is placed | program | | | (Abend) | condition that | in the | should | | | (2) | prevents it from | BACKOUT-REQUIRED | issue a | | | or | continuing normal | condition. | resource| | | Cancel_ | processing. | | recovery| | | Conversat|on | | backout | | | | | | call. | | +----------+---------------------+---------------------+---------+ | | Send_ | The program has | The SPM backs out | Depends | | | Error | detected an error | the transaction, | on the | | | (3) | in received data or | and both programs | response| | | | some other error | are informed of the | from | | | | that may be | backout. | the | | | | correctable. | | partner | | | | | | program.| +----------+----------+---------------------+---------------------+---------+ | Take- | Commit | This is an error in | The commit call is | None | | Backout | | program logic. | treated as though | | | | | | it were a backout | | | | | | call, and the | | | | | | backout request is | | | | | | spread to other | | | | | | programs in the | | | | | | transaction. | | | +----------+---------------------+---------------------+---------+ | | Backout | The program agrees | The backout request | None | | | | to the backout | is spread to other | | | | | request. | programs in the | | | | | | transaction. | | | +----------+---------------------+---------------------+---------+ | | Deallo- | The program has | The conversation's | The | | | cate | detected an error | context is placed | program | | | (Abend) | condition that | in the | should | | | (2) | prevents it from | BACKOUT-REQUIRED | issue a | | | or | continuing normal | condition. | resource| | | Cancel_ | processing. | | recovery| | | Conversat|on | | backout | | | | | | call. | +----------+----------+---------------------+---------------------+---------+ (1) If the take-commit indicator ended in *_DATA_OK, the partner may also send data before making any of the other possible responses. (2) "Deallocate (Abend)" refers to the CPI Communications Deallocate call with a deallocate_type of CM_DEALLOCATE_ABEND. (3) The program can respond with a Send_Error call only when using a half-duplex conversation. Chained and Unchained Transactions When a program is using the X/Open TX resource recovery interface, it may choose when the next transaction is started after the current transaction ends. Specifically, if the TX Transaction_Control variable is set to: o TX_CHAINED, a commit call ends the current transaction and immediately begins the next transaction and establishes a new sync point. o TX_UNCHAINED, a commit call ends the current transaction but does not begin the next transaction. The program must issue the tx_begin call to the X/Open TX interface to start the next transaction and to establish a new sync point. For a conversation using an OSI TP CRM, the program that initializes a conversation may use the Set_Transaction_Control call to specify whether it wants to use chained or unchained transactions for the conversation. The remote program may determine whether chained or unchained transactions are being used for the conversation by issuing the Extract_Transaction_Control call. A conversation using an LU 6.2 CRM must use chained transactions. In a conversation using CHAINED transactions, if a commit call ends the current transaction and immediately begins the next transaction, the conversation is automatically included in that next transaction and is always a protected conversation. If the commit call does not immediately start the next transaction, the conversation is deallocated by the system, and the program is notified of the deallocation by a CM_RESOURCE_FAILURE_RETRY return code. For a conversation using UNCHAINED transactions, when a commit call ends the current transaction, the conversation is not automatically included in the next transaction. Until the next transaction is started and the conversation is included in that transaction, the conversation is not a protected conversation, and any commit or backout processing does not apply to that conversation. After the next transaction is started, the conversation is included in that transaction, and becomes a protected conversation again, when the program requests that the partner program join the transaction. The TX Transaction_Control variable and the CPI Communications transaction_control conversation characteristic are independent. There are four possible combinations: -TX_CHAINED and CM_CHAINED_TRANSACTIONS -TX_CHAINED and CM_UNCHAINED_TRANSACTIONS -TX_UNCHAINED and CM_CHAINED_TRANSACTIONS -TX_UNCHAINED and CM_UNCHAINED_TRANSACTIONS Joining a Transaction For a conversation using chained transactions, when the local program issues an Allocate call after setting the sync_level to CM_SYNC_POINT or CM_SYNC_POINT_NO_CONFIRM and the remote program issues an Accept_Conversation or Accept_Incoming call, the remote program automatically joins the transaction. For a conversation using unchained transactions, when a new transaction is started, the local program has the following two ways of requesting that the partner join the transaction. 1. By making an IMPLICIT request -- The local program can issue a Set_Begin_Transaction call with a begin_transaction value of CM_BEGIN_IMPLICIT, followed by any of the following CPI Communications calls from INITIALIZE, SEND, SEND-PENDING, or SEND-RECEIVE states. o Allocate o Confirm o Include_Partner_In_Transaction o Prepare o Prepare_To_Receive o Receive o Send_Data o Send_Error In this case, when the local program issues the second CPI Communications call, the remote program receives a status_received value of CM_JOIN_TRANSACTION. NOTE: If the local program is not in transaction when one of the above calls is made, the begin_transaction characteristic is ignored, and the partner program is not requested to join a transaction. 2. By making an EXPLICIT request -- The local program can issue a Set_Begin_Transaction call with a begin_transaction value of CM_BEGIN_EXPLICIT. At this point, no indication is sent to the remote program. The remote program does not receive the CM_JOIN_TRANSACTION value until the local program issues an Include_Partner_In_Transaction call. Notice that whether the local program makes an implicit or explicit request for the remote program to join the transaction, the remote program receives the request as a status_received indication of CM_JOIN_TRANSACTION. When it receives this indication, the remote program joins the transaction by issuing a call to a resource recovery interface, such as the tx_begin call to the X/Open TX interface. Using the Include_Partner_In_Transaction call, the local program can control which part of a transaction a given remote program participates in. Table 15 shows the ways a program can respond to a CM_JOIN_TRANSACTION indication. +---------------------------------------------------------------------------+ | Table 15. Responses to the CM_JOIN_TRANSACTION Indication | +----------+----------+---------------------+---------------------+---------+ | NOTIFI- | POSSIBLE | REASON FOR RESPONSE | RESULT OF RESPONSE | FURTHER | | CATION | RESPONSE | | | ACTION | | RECEIVED | | | | REQUIRED| +----------+----------+---------------------+---------------------+---------+ | Join- | tx_ | The program agrees | The local program | None | | Trans- | begin | to join the | is included in the | | | action | | distributed | distributed | | | | | transaction. | transaction. | | | +----------+---------------------+---------------------+---------+ | | Deallo- | The program rejects | The conversation | None | | | cate | the request to join | with the requester | | | | (Abend) | the distributed | is terminated. | | | | (1) | transaction. | | | | | or | | | | | | Cancel_ | | | | | | Conversat|on | | | | +----------+---------------------+---------------------+---------+ | +----------+---------------------+---------------------+---------+ +----------+----------+---------------------+---------------------+---------+ (1) "Deallocate (Abend)" refers to the CPI Communications Deallocate call with a deallocate_type of CM_DEALLOCATE_ABEND. Superior and Subordinate Programs The concept of superior and subordinate programs applies only for conversations with sync_level set to CM_SYNC_POINT or CM_SYNC_POINT_NO_CONFIRM that are are using an OSI TP CRM. The SUPERIOR program is the program that initiates the conversation (using the Initialize_Conversation call). A program that issues the Accept_Conversation or Accept_Incoming call is a SUBORDINATE of the superior program. -- Fig 'TREE1' unknown -- shows a commit tree with seven programs participating in the transaction. --------------- | | ---| Program 3 | | | | | --------------- --------------- | | |---- ---| Program 2 | | | |---- | --------------- | --------------- | | | | | ---| Program 4 | | | | ------------------- --------------- --------------- | | | | | Program 1 |------| Program 5 | | | | | ------------------- --------------- | | | | --------------- --------------- | | | | | ---| Program 6 |------| Program 7 | | | | | --------------- --------------- Commit Tree with Program 1 as Root and Superior In this example, Program 1 is the superior program in its conversations with Programs 2, 5, and 6, which are all its subordinates. Similarly, Program 2 is the superior in its conversations with Programs 3 and 4, and Program 6 is the superior in its conversation with Program 7. Only the superior program that initiated the transaction (program 1 in this case) can issue the initial commit call to end the transaction. However, any of the superior programs in the transaction (in this example, Programs 1, 2, and 6) can issue the Deferred_Deallocate call to their subordinates (but not to their superiors). In addition, the Include_Partner_In_Transaction, Prepare, Set_Begin_Transaction, and Set_Prepare_Data_Permitted calls may be issued only by the superior program. These calls return a CM_PROGRAM_PARAMETER_CHECK return code when they are issued by the subordinate. Additional CPI Communications States In addition to the conversation states described in "Program Flow--States and Transitions," the states described in Table 16 are required when a program uses a protected CPI Communications conversation (that is, with the sync_level characteristic set to CM_SYNC_POINT or CM_SYNC_POINT_NO_CONFIRM). +--------------------------------------------------------------------+ | Table 16. CPI Communications States for Protected Conversations | +-----------------------+--------------------------------------------+ | STATE | DESCRIPTION | +-----------------------+--------------------------------------------+ | DEFER-RECEIVE | The local program's end of the | | | conversation will enter RECEIVE state | | | after a synchronization call completes | | | successfully. The synchronization call | | | may be a resource recovery commit call or | | | a CPI Communications Flush or Confirm | | | call. | | | | | | A conversation enters DEFER-RECEIVE state | | | when the local program issues a | | | Prepare_To_Receive call with | | | prepare_to_receive_type set to | | | CM_PREP_TO_RECEIVE_SYNC_LEVEL and | | | sync_level set to CM_SYNC_POINT or | | | CM_SYNC_POINT_NO_CONFIRM, or when it | | | issues a Send_Data call with send_type set | | | to CM_SEND_AND_PREP_TO_RECEIVE, | | | prepare_to_receive_type set to | | | CM_PREP_TO_RECEIVE_SYNC_LEVEL, and | | | sync_level set to CM_SYNC_POINT or | | | CM_SYNC_POINT_NO_CONFIRM. | | | | | | DEFER-RECEIVE state is applicable for | | | half-duplex conversations only. | +-----------------------+--------------------------------------------+ | DEFER-DEALLOCATE | The local program has requested that the | | | conversation be deallocated after a commit | | | operation has completed; that is, the | | | conversation is included in a transaction, | | | and the program has issued a Deallocate | | | call with deallocate_type set to | | | CM_DEALLOCATE_SYNC_LEVEL and sync_level | | | set to CM_SYNC_POINT or | | | CM_SYNC_POINT_NO_CONFIRM, or it has issued | | | a Send_Data call with send_type set to | | | CM_SEND_AND_DEALLOCATE, deallocate_type | | | set to CM_DEALLOCATE_SYNC_LEVEL, and | | | sync_level set to CM_SYNC_POINT or | | | CM_SYNC_POINT_NO_CONFIRM. The | | | conversation will not be deallocated until | | | a successful commit operation takes place. | +-----------------------+--------------------------------------------+ | PREPARED | The local program has issued a Prepare | | | call to request that the remote program | | | prepare its resources for commitment. | +-----------------------+--------------------------------------------+ | SYNC-POINT | The local program issued a Receive call | | | and was given a return_code of CM_OK and a | | | status_received of CM_TAKE_COMMIT or | | | CM_TAKE_COMMIT_DATA_OK. After a | | | successful commit operation, a half-duplex | | | conversation will return to RECEIVE state, | | | while a full-duplex conversation will | | | return to SEND-RECEIVE state. | +-----------------------+--------------------------------------------+ | SYNC-POINT-SEND | The local program issued a Receive call | | | and was given a return_code of CM_OK and a | | | status_received of CM_TAKE_COMMIT_SEND or | | | CM_TAKE_COMMIT_SEND_DATA_OK. After a | | | successful commit operation, the | | | conversation will be placed in SEND state. | | | | | | SYNC-POINT-SEND state is applicable for | | | half-duplex conversations only. | +-----------------------+--------------------------------------------+ | SYNC-POINT-DEALLOCATE | The local program issued a Receive call | | | and was given a return_code of CM_OK and a | | | status_received of | | | CM_TAKE_COMMIT_DEALLOCATE or | | | CM_TAKE_COMMIT_DEALLOC_DATA_OK. After a | | | successful commit operation, the | | | conversation will be deallocated and | | | placed in RESET state. | +-----------------------+--------------------------------------------+ Valid States for Resource Recovery Calls A program must ensure that there are no outstanding operations on its protected conversations within a context before issuing a resource recovery call for that context. If a resource recovery call is issued while there is an outstanding operation on a protected conversation, the program receives from the resource recovery interface a return code indicating an error. All protected conversations within a context must be in one of the following states for the program to issue a commit call for that context: o RESET o INITIALIZE o INITIALIZE-INCOMING o SEND o SEND-PENDING o DEFER-RECEIVE o DEFER-DEALLOCATE o PREPARED o SEND-RECEIVE o SYNC-POINT o SYNC-POINT-SEND o SYNC-POINT-DEALLOCATE If a commit call is issued from any other conversation state, the program receives from the resource recovery interface a return code indicating an error. The program can also receive an error return code if the conversation was in SEND or SEND-RECEIVE state when the commit call was issued, and the program had started but had not finished sending a basic conversation logical record. A backout call can be issued in any state. ---------------------------------------------------------------------------------------------------------------------------------- Chapter 3. Program-to-Program Communication Tutorial This chapter provides example flows of how two programs using CPI Communications can exchange information and data in a controlled manner. The examples are divided into these sections: o "Starter-Set Flows" o "Advanced-Function Flows" In addition to these sample flows, a simple COBOL application using CPI Communications calls is provided in Appendix G, "Sample Programs" on page 3. ------------------------------ Interpreting the Flow Diagrams In the flow diagrams shown in this chapter (for example, Figure 9), vertical dotted lines indicate the components involved in the exchange of information between systems. The horizontal arrows indicate the direction of the flow for that step. The numbers lined up on the left side of the flow are reference points to the flow and indicate the progression of the calls made on the conversation. These same numbers correspond to the numbers under the STEP heading of the text description for each example. The call parameter lists shown in the flows are not complete; only the parameters of particular interest to the flows being discussed are shown. A complete description of each CPI Communications call and the required parameters can be found in Chapter 4, "Call Reference Section." A complete discussion of all possible timing scenarios is beyond the scope of the chapter. Where appropriate, such discussion is provided in the individual call descriptions in Chapter 4, "Call Reference Section." NOTE: The softcopy versions of the flow diagrams in this chapter may not display all characters that appear in the printed book. For example, arrows are shown as dashes on some display devices. ----------------- Starter-Set Flows This section provides examples of programs using the CPI Communications starter-set calls: o "Example 1: Data Flow in One Direction" demonstrates a flow of data in only one direction (only the initiating program sends data). o "Example 2: Data Flow in Both Directions" describes a bidirectional flow of data (the initiating program sends data and then allows the partner program to send data). Example 1: Data Flow in One Direction Figure 9 shows an example of a conversation where the flow of data is in only one direction. The steps shown in Figure 9 are: +-----------+---------------------------------------------------------------+ | STEP | DESCRIPTION | +-----------+---------------------------------------------------------------+ | [1] | To communicate with its partner program, Program A must first | | | establish a conversation. Program A uses the | | | Initialize_Conversation call to tell CPI Communications that | | | it wants to: | | | | | | o Initialize a conversation | | | o Identify the conversation partner (using sym_dest_name) | | | o Ask CPI Communications to establish the identifier that | | | the program will use when referring to the conversation | | | (the conversation_ID). | | | | | | Upon successful completion of the Initialize_Conversation | | | call, CPI Communications assigns a conversation_ID and | | | returns it to Program A. The program must store the | | | conversation_ID and use it on all subsequent calls intended | | | for that conversation. | +-----------+---------------------------------------------------------------+ | [2] | No errors were found on the Initialize_Conversation call, and | | | the return_code is set to CM_OK. | | | | | | Two major tasks are now accomplished: | | | | | | o CPI Communications has established a set of conversation | | | characteristics for the conversation, based on the | | | sym_dest_name, and uniquely associated them with the | | | conversation_ID. | | | | | | o The default values for the conversation characteristics, | | | as listed in "Initialize_Conversation (CMINIT)," have | | | been assigned. (For example, the conversation now has | | | conversation_type set to CM_MAPPED_CONVERSATION.) | | | | +-----------+---------------------------------------------------------------+ | [3] | Program A asks that a conversation be started with an | | | Allocate call (see "Allocate (CMALLC)") using the | | | conversation_ID previously assigned by the | | | Initialize_Conversation call. | +-----------+---------------------------------------------------------------+ | [4] | If a logical connection between the systems is not already | | | available, one is activated. Program A and Program C can now | | | have a conversation. | +-----------+---------------------------------------------------------------+ | [5] | A return_code of CM_OK indicates that the Allocate call was | | | successful and the system has allocated the necessary | | | resources to the program for its conversation. Program A's | | | conversation is now in SEND state and Program A can begin to | | | send data. | | | | | | NOTE: In this example, the error conditions that can arise | | | (such as no logical connections available) are not discussed. | | | See "Allocate (CMALLC)" for more information about the error | | | conditions that can result. | +-----------+---------------------------------------------------------------+ | [6] and | Program A sends data with the Send_Data call (described in | | [7] | "Send_Data (CMSEND)") and receives a return_code of CM_OK. | | | Until now, the conversation may not have been established | | | because the conversation startup request may not be sent | | | until the first flow of data. In fact, any number of | | | Send_Data calls can be issued before CPI Communications | | | actually has a full buffer, which causes it to send the | | | startup request and data. Step [6] shows a case where the | | | amount of data sent by the first Send_Data is greater than | | | the size of the local system's send buffer (a | | | system-dependent property), which is one of the conditions | | | that triggers the sending of data. The request for a | | | conversation is sent at this time. | | | | | | NOTES: | | | | | | 1. Some implementations may choose to transmit the | | | conversation startup request as part of the Allocate | | | processing. | | | | | | 2. The local program can ensure that the remote program is | | | connected as soon as possible by issuing Flush (CMFLUS) | | | immediately after Allocate (CMALLC). | | | | | | For a complete discussion of transmission conditions and how | | | to ensure the immediate establishment of a conversation and | | | transmission of data, see "Data Buffering and Transmission." | +-----------+---------------------------------------------------------------+ | [8] and | Once the conversation is established, the remote program's | | [9] | system takes care of starting Program C. The conversation on | | | Program C's side is in RESET state and Program C issues a | | | call to Accept_Conversation, which places the conversation | | | into RECEIVE state. The Accept_Conversation call is similar | | | to the Initialize_Conversation call in that it equates a | | | conversation_ID with a set of conversation characteristics | | | (see "Accept_Conversation (CMACCP)" for details). Program C, | | | like Program A in Step [2], receives a unique conversation_ID | | | that it will use in all future CPI Communications calls for | | | that particular conversation. As discussed in "Conversation | | | Characteristics," some of Program C's defaults are based on | | | information contained in the conversation startup request. | +-----------+---------------------------------------------------------------+ | [10] and | Once its end of the conversation is in RECEIVE state, Program | | [11] | C begins whatever processing role it and Program A have | | | agreed upon. In this case, Program C accepts data with a | | | Receive call (as described in "Receive (CMRCV)"). | | | | | | Program A could continue to make Send_Data calls (and Program | | | C could continue to make Receive calls), but, for the | | | purposes of this example, assume that Program A only wanted | | | to send the data contained in its initial Send_Data call. | +-----------+---------------------------------------------------------------+ | [12] | Program A issues a Deallocate call (see "Deallocate | | | (CMDEAL)") to send any data buffered in the local system and | | | release the conversation. Program C issues a final Receive, | | | shown here in the same step as the Deallocate, to check that | | | it has all the received data. | +-----------+---------------------------------------------------------------+ | [13] and | The return_code of CM_DEALLOCATED_NORMAL tells Program C that | | [14] | the conversation is deallocated. Both Program C and Program | | | A finish normally. | | | | | | NOTE: Only one program should issue Deallocate; in this case | | | it was Program A. If Program C had issued Deallocate after | | | receiving CM_DEALLOCATED_NORMAL, an error would have | | | resulted. | +-----------+---------------------------------------------------------------+ SYSTEM X SYSTEM Y *-------------------------------* *-------------------------------* | *-------* *--------------* | | *--------------* *-------* | | |Program| | CPI | |---------------------------| | CPI | |Program| | | | A | |Communications| | | |Communications| | C | | | *.------* *-------------.* | | *.-------------* *------.* | *--.-------------------------.--* *--.-------------------------.--* . . . . Initialize_Conversation (sym_dest_name) . . [1] .------------------------>. . . conversation_ID, return_code=CM_OK . . [2] .<------------------------. . . . . . . .Allocate(conversation_ID). . . [3] .------------------------>. Logical connection setup, . . . . if logical connection . . . . not already available . . [4] . .<------------------------------->. . . return_code=CM_OK . . . [5] .<------------------------. . . . . . . .Send_Data(conversation_ID, conversation startup request, . . . data) . data . . [6] .------------------------>.-------------------------------->. . . return_code=CM_OK . . . [7] .<------------------------. .(Program C is started by . . . . node services) . . . . . . . . Accept_Conversation . [8] . . .<------------------------. . . conversation_ID, return_code=CM_OK [9] . . .------------------------>. . . . . . . . Receive(conversation_ID). [10]. . .<------------------------. . . . data, return_code=CM_OK . [11]. . .------------------------>. . . remainder of data, . . .Deallocate(conversation_ID) conversation end . Receive(conversation_ID). [12].------------------------>.-------------------------------->.<------------------------. . return_code=CM_OK . . data, . [13].<------------------------. return_code=CM_DEALLOCATED_NORMAL . . .------------------------>. . . . . . . . . [14]. (Program A completes . . (Program C completes . . normally) . . normally) . . . . . . . . . Figure 9. Data Flow in One Direction Example 2: Data Flow in Both Directions Figure 10 shows a conversation in which the flow of data is in both directions. It describes how two programs using starter-set calls can initiate a change of control over who is sending the data. The steps shown in Figure 10 are: +--------------+------------------------------------------------------------+ | STEP | DESCRIPTION | +--------------+------------------------------------------------------------+ | [1] through | Program A is sending data and Program C is receiving data. | | [4] | | | | NOTE: The conversation in this example is already | | | established with the default characteristics. Program A's | | | end of the conversation is in SEND state, and Program C's | | | is in RECEIVE state. | +--------------+------------------------------------------------------------+ | [5] | After sending some amount of data (an indeterminate number | | | of Send_Data calls), Program A issues the Receive call | | | while its end of the conversation is in SEND state. As | | | described in "Receive (CMRCV)," this call causes the | | | remaining data buffered at System X to be sent and | | | permission to send to be given to Program C. Program A's | | | end of the conversation is placed in RECEIVE state, and | | | Program A waits for a response from Program C. | | | | | | NOTE: See "Example 4: The Sending Program Changes the | | | Data Flow Direction" for alternate methods that allow | | | Program A to continue processing. | | | | | | Program C issues a Receive call in the same way it issued | | | the two prior Receive calls. | +--------------+------------------------------------------------------------+ | [6] | Program C receives not only the last of the data from | | | Program A, but also a status_received parameter set to | | | CM_SEND_RECEIVED. The value of CM_SEND_RECEIVED notifies | | | Program C that its end of the conversation is now in SEND | | | state. | +--------------+------------------------------------------------------------+ | [7] | As a result of the status_received value, Program C issues | | | a Send_Data call. The data from this call, on arrival at | | | System X, is returned to Program A as a response to the | | | Receive it issued in Step [5]. | | | | | | At this point, the flow of data has been completely | | | reversed and the two programs can continue whatever | | | processing their logic dictates. | | | | | | To give control of the conversation back to Program A, | | | Program C would simply follow the same procedure that | | | Program A executed in Step[5]. | +--------------+------------------------------------------------------------+ | [8] through | Programs A and C continue processing. Program C sends | | [10] | data and Program A receives the data. | +--------------+------------------------------------------------------------+ SYSTEM X SYSTEM Y *-------------------------------* *-------------------------------* | *-------* *--------------* | | *--------------* *-------* | | |Program| | CPI | |---------------------------| | CPI | |Program| | | | A | |Communications| | | |Communications| | C | | | *.------* *-------------.* | | *.-------------* *------.* | *--.-------------------------.--* *--.-------------------------.--* . . Programs A and C are in . . . . conversation . . . . . . .Send_Data(conversation_ID, data) data . Receive(conversation_ID). [1] .------------------------>.-------------------------------->.<------------------------. . return_code=CM_OK . . data, return_code=CM_OK . [2] .<------------------------. .------------------------>. . . . . .Send_Data(conversation_ID, data) data . Receive(conversation_ID). [3] .------------------------>.-------------------------------->.<------------------------. . return_code=CM_OK . . data, return_code=CM_OK . [4] .<------------------------. .------------------------>. . . permission to send, . . . Receive(conversation_ID). remainder of data, if any . Receive(conversation_ID). [5] .------------------------>.-------------------------------->.<------------------------. . (Program A waits for . . data, . . data from C) . status_received=CM_SEND_RECEIVED [6] . . .------------------------>. . . . . . data, return_code=CM_OK . data Send_Data(conversation_ID, data) [7] .<------------------------.<--------------------------------.<------------------------. . . . return_code=CM_OK . [8] . . .------------------------>. . . . . . Receive(conversation_ID). data Send_Data(conversation_ID, data) [9] .------------------------>.<--------------------------------.<------------------------. . data, return_code=CM_OK . . return_code=CM_OK . [10].<------------------------. .------------------------>. . . . . . (further processing by both programs) . . . . . Figure 10. Data Flow in Both Directions ----------------------- Advanced-Function Flows This section provides examples of programs using the advanced-function calls: o "Example 3: Using the Distributed Directory to Locate the Partner Program" shows program use of a distributed directory. o "Example 4: The Sending Program Changes the Data Flow Direction" shows how to use the Prepare_To_Receive call to change the direction of the data flow on a half-duplex conversation. o "Example 5: Validation and Confirmation of Data Reception" shows how to use the Confirm and Confirmed calls to validate data reception on a half-duplex conversation. The Flush call is also shown. o "Example 6: The Receiving Program Changes the Data Flow Direction" shows how to use the Request_To_Send call to request a change in the direction of the data flow on a half-duplex conversation. o "Example 7: Reporting Errors" shows how to use the Send_Error call to report errors in the data flow on a half-duplex conversation. o "Example 8: Error Direction and Send-Pending State" shows how to use the SEND-PENDING state and the error_direction characteristic to resolve an ambiguous error condition that can occur when a program receives both a change-of-direction indication and data for a Receive call on a half-duplex conversation. o "Example 9: Sending Program Issues a Commit" shows how to use a protected conversation with a resource recovery commit call to establish a synchronization point for protected resources on a half-duplex conversation. o "Example 10: A Successful Commit with Conversation State Change" shows a successful resource recovery commit operation with a conversation state change on a half-duplex conversation. o "Example 11: Conversation Deallocation before the Commit Call" shows a resource recovery commit call issued after a CPI Communications Deallocate call on a half-duplex conversation. o "Example 12: Accepting Multiple Conversations Using Blocking Calls" shows a program that uses blocking calls to accept multiple incoming half-duplex conversations. o "Example 13: Accepting Multiple Conversations Using Conversation-Level Non-Blocking Calls" shows a program that uses non-blocking calls to accept multiple incoming half-duplex conversations. o "Example 14: Establishing a Full-Duplex Conversation" describes how a full-duplex conversation is established. o "Example 15: Using a Full-Duplex Conversation" describes how a full-duplex conversation is used to send and receive data. o "Example 16: Terminating a Full-Duplex Conversation" describes how a full-duplex conversation can be terminated. o "Example 17: Using Queue-Level Non-Blocking" describes how a program uses queue-level non-blocking. This section begins with a discussion of how a program can exercise control over when the system actually transmits the data. Data Buffering and Transmission If a program uses the initial set of conversation characteristics, data is not automatically sent to the remote program after a Send_Data has been issued, except when the send buffer at the local system overflows. As shown in the starter-set flows, the startup of the conversation and subsequent data flow can occur anytime after the program call to Allocate. This is because the system stores the data in internal buffers and groups transmissions together for efficiency. A program can exercise explicit control over the transmission of data by using one of the following calls to cause the buffered data's immediate transmission: o Confirm o Deallocate o Deferred_Deallocate o Flush o Include_Partner_In_Transaction o Prepare o Prepare_To_Receive o Receive (in SEND state) with receive_type set to CM_RECEIVE_AND_WAIT (receive_type's default setting) o Send_Error The use of Receive in SEND state and the use of Deallocate have already been shown in "Starter-Set Flows." The other calls are discussed in the following examples. Example 3: Using the Distributed Directory to Locate the Partner Program Figure 11 is a variation on the function provided by the flow shown in "Example 1: Data Flow in One Direction" on page 1. In this case, the program directly provides a distinguished name so as to access information contained in the distributed directory. The steps shown in Figure 11 are: +--------------+------------------------------------------------------------+ | STEP | DESCRIPTION | +--------------+------------------------------------------------------------+ | [1] and [2] | Program A establishes the conversation and retrieves a | | | conversation_ID using a sym_dest_name of all blanks. | +--------------+------------------------------------------------------------+ | [3] and [4] | Program A uses the Set_Partner_ID call to provide a | | | distinguished name to CPI Communications. To provide a | | | program binding or PFID, Program A could use the same call | | | and set the partner_ID_type parameter to | | | CM_PROGRAM_BINDING or CM_PROGRAM_FUNCTION_ID. | +--------------+------------------------------------------------------------+ | [5] and [6] | When Program A issues the Allocate call, CPI | | | Communications uses the distinguished name it received in | | | [3] to retrieve a program binding from the distributed | | | directory. This information is then used to establish a | | | logical connection with the partner CRM and allocate a | | | conversation with Program C. | +--------------+------------------------------------------------------------+ | [7] and [8] | After the conversation has been successfully allocated, | | | the program can issue the Extract_Partner_ID call to | | | retrieve the specific program binding, as shown in Step | | | [7]. The partner_ID parameter returned in Step [8] | | | contains the program binding used to allocate the | | | conversation with Program C. | | | | | | Note that the partner_ID field, which contained a | | | distinguished name prior to the Allocate, has now been | | | updated to contain a program binding. | +--------------+------------------------------------------------------------+ | [9] and [10] | Program A begins to send data to its partner program and | | | continues with further processing. | +--------------+------------------------------------------------------------+ SYSTEM X SYSTEM Y *-------------------------------* *-------------------------------* | *-------* *--------------* | | *--------------* *-------* | | |Program| | CPI | |---------------------------| | CPI | |Program| | | | A | |Communications| | | |Communications| | C | | | *.------* *-------------.* | | *.-------------* *------.* | *--.-------------------------.--* *--.-------------------------.--* . . . . Initialize_Conversation (sym_dest_name=' ') . . [1] .------------------------>. . . conversation_ID, return_code=CM_OK . . [2] .<------------------------. . . . . . . Set_Partner_ID(conversation_ID . . partner_ID_type = CM_DISTINGUISHED_NAME . . partner_ID = my_partner_distinguished_name . . partner_ID_scope = CM_EXPLICIT . . directory_syntax = CM_DEFAULT_SYNTAX . . directory_encoding = CM_DEFAULT_ENCODING) . . [3] .------------------------>. . . . return_code=CM_OK . . . [4] .<------------------------. . . . . logical connection setup, if . . .Allocate(conversation_ID). not already available . . [5] .------------------------>.<------------------------------->. . . return_code=CM_OK . . . [6] .<------------------------. . . . . . . Extract_Partner_ID(conversation_ID) . . [7] .------------------------>. . . partner_ID_type = CM_PROGRAM_BINDING . . partner_ID = my_partner_binding . . . return_code=CM_OK . . . [8] .<------------------------. . . . . . . .Send_Data(conversation_ID, conversation startup request, . . . data) . data . . [9] .------------------------>.-------------------------------->. . . return_code=CM_OK . . . [10].<------------------------. .(Program C is started by . . . . node services) . . . . . . (further processing by both programs) . . . . . Figure 11. Using the Distributed Directory to Locate the Partner Program Example 4: The Sending Program Changes the Data Flow Direction Figure 12 is a variation on the function provided by the flow shown in "Example 2: Data Flow in Both Directions." When the data flow direction changes, Program A can continue processing instead of waiting for data to arrive on this half-duplex conversation. The steps shown in Figure 12 are: +--------------+------------------------------------------------------------+ | STEP | DESCRIPTION | +--------------+------------------------------------------------------------+ | [1] through | The program begins the same as "Example 1: Data Flow in | | [6] | One Direction." Program A establishes the conversation and | | | makes the initial transmission of data. | +--------------+------------------------------------------------------------+ | [7] through | Program A makes use of an advanced-function call, | | [10] | Prepare_To_Receive, (described in "Prepare_To_Receive | | | (CMPTR)"), which sends an indication to Program C that | | | Program A is ready to receive data. This call also | | | flushes the data buffer and places Program A's end of the | | | conversation into RECEIVE state. It does not, as did the | | | Receive call when used with the initial conversation | | | characteristics in effect, force Program A to pause and | | | wait for data from Program C to arrive. Program A | | | continues processing while data is sent to Program C. | +--------------+------------------------------------------------------------+ | [11] through | Program C, started by System Y's reception of the | | [13] | conversation startup request and buffered data, makes the | | | Accept_Conversation and Receive calls. | | | | | | Program A finishes its processing and issues its own | | | Receive call. It will now wait until data is received | | | (Step [15]). | +--------------+------------------------------------------------------------+ | [14] through | The status_received on the Receive call made by Program C, | | [16] | which is set to CM_SEND_RECEIVED, tells Program C that the | | | conversation is in SEND state. Program C can now issue | | | the Send_Data call. | | | | | | Program A receives the data. | | | | | | NOTE: There is a way for Program A to check periodically | | | to see if the data has arrived, without waiting. After | | | issuing the Prepare_To_Receive call, Program A can use the | | | Set_Receive_Type call to set the receive_type conversation | | | characteristic equal to CM_RECEIVE_IMMEDIATE. This call | | | changes the nature of all subsequent Receive calls issued | | | by Program A (until a further call to Set_Receive_Type is | | | made). If a Receive is issued with the receive_type set | | | to CM_RECEIVE_IMMEDIATE, the program retains control of | | | processing without waiting. It receives data back if data | | | is present, and a return_code of CM_UNSUCCESSFUL if no | | | data has arrived. | | | | | | This method of receiving data is not shown in Figure 12. | | | For further discussion of this alternate flow, see | | | "Set_Receive_Type (CMSRT)" and "Receive (CMRCV)." | +--------------+------------------------------------------------------------+ SYSTEM X SYSTEM Y *-------------------------------* *-------------------------------* | *-------* *--------------* | | *--------------* *-------* | | |Program| | CPI | |---------------------------| | CPI | |Program| | | | A | |Communications| | | |Communications| | C | | | *.------* *-------------.* | | *.-------------* *------.* | *--.-------------------------.--* *--.-------------------------.--* . . . . Initialize_Conversation (sym_dest_name) . . [1] .------------------------>. . . conversation_ID, return_code=CM_OK . . [2] .<------------------------. Logical connection setup, . . . . if logical connection . . .Allocate(conversation_ID). not already available . . [3] .------------------------>.<------------------------------->. . . return_code=CM_OK . . . [4] .<------------------------. . . . . . . .Send_Data(conversation_ID, data) . . [5] .------------------------>. . . . return_code=CM_OK . . . [6] .<------------------------. permission to send, . . . . conversation startup request, . . Prepare_To_Receive(conversation_ID) all buffered data . . [7] .------------------------>.-------------------------------->. . . return_code=CM_OK . . . [8] .<------------------------. . . . . . . [9] . (Program A continues . .(Program C is started by . . to process while . . node services) . . data is sent to . . . [10]. Program C) . . . . . . . . . . Accept_Conversation . [11]. . .<------------------------. . . conversation_ID, return_code=CM_OK [12]. . .------------------------>. . . . . . Receive(conversation_ID). . Receive(conversation_ID). [13].------------------------>. .<------------------------. . . . data, . . . status_received=CM_SEND_RECEIVED [14]. . .------------------------>. . . . . . data, return_code=CM_OK . data Send_Data(conversation_ID, data) [15].<------------------------.<--------------------------------.<------------------------. . . . return_code=CM_OK . [16]. . .------------------------>. . . . . . (further processing by both programs) . . . . . Figure 12. The Sending Program Changes the Data Flow Direction Example 5: Validation and Confirmation of Data Reception Figure 13 shows how a program can use the Confirm and Confirmed calls on a half-duplex conversation to verify receipt of its sent data. The Flush call is also shown. The steps shown in Figure 13 are: +--------------+------------------------------------------------------------+ | STEP | DESCRIPTION | +--------------+------------------------------------------------------------+ | [1] and [2] | As before, Program A issues the Initialize_Conversation | | | call to initialize the conversation. | +--------------+------------------------------------------------------------+ | [3] and [4] | Program A issues a new call, Set_Sync_Level, to set the | | | sync_level characteristic to CM_CONFIRM. | | | | | | NOTE: Program A must set the sync_level characteristic | | | before issuing the Allocate call (Step [5]) for the value | | | to take effect. Attempting to change the sync_level after | | | the conversation is allocated results in an error | | | condition. See "Set_Sync_Level (CMSSL)" for a detailed | | | discussion of the sync_level characteristic and the | | | meaning of CM_CONFIRM. | +--------------+------------------------------------------------------------+ | [5] and [6] | Program A issues the Allocate call to start the | | | conversation. | +--------------+------------------------------------------------------------+ | [7] and [8] | Program A uses the Flush call (see "Flush (CMFLUS)") to | | | make sure that the conversation is immediately | | | established. If data is present, the local system buffer | | | is emptied and the contents are sent to the remote system. | | | Since no data is present, only the conversation startup | | | request is sent to establish the conversation. | | | | | | At System Y, the conversation startup request is received. | | | Program C is started and begins processing. | +--------------+------------------------------------------------------------+ | [9]and [10] | Program A issues a Send_Data call. Program C issues an | | | Accept_Conversation call. | +--------------+------------------------------------------------------------+ | [11] | Program A issues a Confirm call to make sure that Program | | | C has received the data and performed any data validation | | | that Programs A and C have agreed upon. Program A is | | | forced to wait for a reply. | +--------------+------------------------------------------------------------+ | [12] and | Program C issues a Receive call and receives the data with | | [13] | status_received set to CM_CONFIRM_RECEIVED. | +--------------+------------------------------------------------------------+ | [14] and | Because status_received is set to CM_CONFIRM_RECEIVED, | | [15] | indicating a confirmation request, the conversation has | | | been placed into CONFIRM state. Program C must now issue | | | a Confirmed call. After Program C makes the Confirmed | | | call (see "Confirmed (CMCFMD)"), the conversation returns | | | to RECEIVE state. Meanwhile, at System X, the | | | confirmation reply arrives and the CM_OK return_code is | | | sent back to Program A. | +--------------+------------------------------------------------------------+ | [16] | Program A continues with further processing. | | | | | | NOTE: Unlike the previous examples in which a program | | | could bypass waiting, this example demonstrates that use | | | of the Confirm call forces the program to wait for a | | | reply. | +--------------+------------------------------------------------------------+ SYSTEM X SYSTEM Y *-------------------------------* *-------------------------------* | *-------* *--------------* | | *--------------* *-------* | | |Program| | CPI | |---------------------------| | CPI | |Program| | | | A | |Communications| | | |Communications| | C | | | *.------* *-------------.* | | *.-------------* *------.* | *--.-------------------------.--* *--.-------------------------.--* . . . . Initialize_Conversation (sym_dest_name) . . [1] .------------------------>. . . conversation_ID, return_code=CM_OK . . [2] .<------------------------. . . . . . . Set_Sync_Level(CM_CONFIRM). . . [3] .------------------------>. . . . return_code=CM_OK . . . [4] .<------------------------. Logical connection setup, . . . . if logical connection . . .Allocate(conversation_ID). not already available . . [5] .------------------------>.<------------------------------->. . . return_code=CM_OK . . . [6] .<------------------------. . . . . . . . Flush(conversation_ID) . conversation startup request . . [7] .------------------------>.-------------------------------->. . . return_code=CM_OK . .(Program C is started by . [8] .<------------------------. . node services) . . . . . . Send_Data(conversation_ID, data) . Accept_Conversation . [9] .------------------------>. .<------------------------. . return_code=CM_OK . conversation_ID, return_code=CM_OK [10].<------------------------. .------------------------>. . . . . .Confirm(conversation_ID) . confirmation request, data . . [11].------------------------>.-------------------------------->. . . (Program A waits for . . Receive(conversation_ID). [12]. a reply from . .<------------------------. . Program C) . . data, . . . status_received=CM_CONFIRM_RECEIVED [13]. . .------------------------>. . . . . . return_code=CM_OK . confirmation reply .Confirmed(conversation_ID) [14].<------------------------.<--------------------------------.<------------------------. . . . return_code=CM_OK . [15]. . .------------------------>. . Send_Data(conversation_ID, data) . . [16].------------------------>. . . . . . . . (further processing by both programs) . . . . . Figure 13. Validation and Confirmation of Data Reception Example 6: The Receiving Program Changes the Data Flow Direction Figure 14 shows how a program on the receiving side of a half-duplex conversation can request a change in the direction of data flow with the Request_To_Send call. (See "Request_To_Send (CMRTS)" for more information.) In this example, Programs A and C have already established a conversation using the default conversation characteristics. The steps shown in Figure 14 are: +--------------+------------------------------------------------------------+ | STEP | DESCRIPTION | +--------------+------------------------------------------------------------+ | [1] and [2] | Program A is sending data and Program C is receiving the | | | data. | +--------------+------------------------------------------------------------+ | [3] and [4] | Program C issues a Request_To_Send call in order to begin | | | sending data. Program A will be notified of this request | | | on the return value of the next call issued by Program A | | | (Send_Data in this case, Step [6]). | +--------------+------------------------------------------------------------+ | [5] and [6] | Program A issues a Send_Data request, and the call returns | | | with control_information_received set equal to | | | CM_REQ_TO_SEND_RECEIVED. | +--------------+------------------------------------------------------------+ | [7] and [8] | In reply to the Request_To_Send, Program A issues a | | | Prepare_To_Receive call, which allows Program A to | | | continue its own processing and passes permission to send | | | to Program C. The call also forces the buffer at System X | | | to be flushed. It leaves the conversation in RECEIVE | | | state for Program A. | | | | | | NOTE: Program A does not have to reply to the | | | Request_To_Send call immediately (as it does in this | | | example). See "Example 4: The Sending Program Changes | | | the Data Flow Direction" for other possible responses. | | | | | | Program C continues with normal processing by issuing a | | | Receive call and receives Program A's acceptance of the | | | Request_To_Send on the status_received parameter, which is | | | set to CM_SEND_RECEIVED. The conversation is now in SEND | | | state for Program C. | +--------------+------------------------------------------------------------+ | [9] and [10] | Program C can now transmit data. Because Program C has | | | only one instance of data to transmit, it first changes | | | the send_type conversation characteristic by issuing | | | Set_Send_Type. Setting send_type to a value of | | | CM_SEND_AND_PREP_TO_RECEIVE means that Program C's end of | | | the conversation will return to RECEIVE state after | | | Program C issues a Send_Data call. It also forces a | | | flushing of the system's data buffer. | +--------------+------------------------------------------------------------+ | [11] | Program C issues the Send_Data call and its end of the | | | conversation is placed in RECEIVE state. The data and | | | permission-to-send indication are transmitted from System | | | Y to System X. | | | | | | Program A, meanwhile, has finished its own processing and | | | issued a Receive call (which is perfectly timed, in this | | | diagram). | +--------------+------------------------------------------------------------+ | [12] | Program A receives the data requested and, because of the | | | value of the status_received parameter (which is set to | | | CM_SEND_RECEIVED), knows that the conversation has been | | | returned to SEND state. | +--------------+------------------------------------------------------------+ | [13] and | The original processing flow continues: Program A issues | | [14] | a Send_Data call and Program C issues a Receive call. | +--------------+------------------------------------------------------------+ SYSTEM X SYSTEM Y *-------------------------------* *-------------------------------* | *-------* *--------------* | | *--------------* *-------* | | |Program| | CPI | |---------------------------| | CPI | |Program| | | | A | |Communications| | | |Communications| | C | | | *.------* *-------------.* | | *.-------------* *------.* | *--.-------------------------.--* *--.-------------------------.--* . . . . . . Programs A and C are in . . . . conversation . . . . . . .Send_Data(conversation_ID, data) data . Receive(conversation_ID). [1] .------------------------>.-------------------------------->.<------------------------. . return_code=CM_OK . . data, return_code=CM_OK . [2] .<------------------------. .------------------------>. . . request for permission . . . . to send Request_To_Send(conversation_ID) [3] . .<--------------------------------.<------------------------. . . . return_code=CM_OK . [4] . . .------------------------>. . . . . .Send_Data(conversation_ID, data) data . Receive(conversation_ID). [5] .------------------------>.-------------------------------->.<------------------------. . return_code=CM_OK, . . . control_information_received=CM_REQUEST_TO_SEND_RECEIVED . data, return_code=CM_OK . [6] .<------------------------. .------------------------>. . . permission to send, . . Prepare_To_Receive(conversation_ID) data . Receive(conversation_ID). [7] .------------------------>.-------------------------------->.<------------------------. . . .data, return_code=CM_OK, . . return_code=CM_OK . status_received=CM_SEND_RECEIVED [8] .<------------------------. .------------------------>. . (Program A continues . . . . local processing) . Set_Send_Type(conversation_ID, . . send_type=CM_SEND_AND_PREP_TO_RECEIVE) [9] . . .<------------------------. . . . return_code=CM_OK . [10]. . .------------------------>. . . permission to send, . . . Receive(conversation_ID). data Send_Data(conversation_ID, data) [11].------------------------>.<--------------------------------.<------------------------. .data, return_code=CM_OK, . . . . status_received=CM_SEND_RECEIVED . return_code=CM_OK . [12].<------------------------. .------------------------>. . . . . .Send_Data(conversation_ID, data) data . Receive(conversation_ID). [13].------------------------>.-------------------------------->.<------------------------. . return_code=CM_OK . . data, return_code=CM_OK . [14].<------------------------. .------------------------>. . . . . . (further processing by both programs) . . . . . Figure 14. Changing the Data Flow Direction Example 7: Reporting Errors All the previous examples assumed that no errors were found in the data, and that the receiving program was able to continue receiving data. However, in some cases the local program may detect an error in the data or may find that it is unable to receive more data (for example, its buffers are full) and cannot wait for the remote program to honor a request-to-send request. Figure 15 shows how to use the Send_Error call in these situations. The programs are using a half-duplex conversation in this example. NOTE: This example describes the simplest type of error reporting, an error found while receiving data. "Example 8: Error Direction and Send-Pending State" describes a more complicated use of Send_Error. The steps shown in Figure 15 are: +--------------+------------------------------------------------------------+ | STEP | DESCRIPTION | +--------------+------------------------------------------------------------+ | [1] and [2] | Program A is sending data and Program C is receiving data. | | | The initial characteristic values set by | | | Initialize_Conversation and Accept_Conversation are in | | | effect. | +--------------+------------------------------------------------------------+ | [3] and [4] | Program C encounters an error on the received data and | | | issues the Send_Error call. The local system sends | | | control information to System X indicating that the | | | Send_Error has been issued and purges all data contained | | | in its buffer. | +--------------+------------------------------------------------------------+ | [5] and [6] | Meanwhile, Program A has sent more data. This data is | | | purged because System X knows that a Send_Error has been | | | issued at System Y (the control information sent in Step | | | [3]). After System X sends control information to System | | | Y, a return_code of CM_OK is returned to Program C and the | | | conversation is left in SEND state. | | | | | | Program A learns of the error (and possibly lost data) | | | when it receives back the return_code, which is set to | | | CM_PROGRAM_ERROR_PURGING. Program A's end of the | | | conversation is also placed into RECEIVE state, in a | | | parallel action to the now-new SEND state of the | | | conversation for Program C. | +--------------+------------------------------------------------------------+ | [7] and [8] | Program C issues a Send_Data call, and Program A receives | | | the data using the Receive call. | | | | | | Programs A and C continue processing normally. | +--------------+------------------------------------------------------------+ SYSTEM X SYSTEM Y *-------------------------------* *-------------------------------* | *-------* *--------------* | | *--------------* *-------* | | |Program| | CPI | |---------------------------| | CPI | |Program| | | | A | |Communications| | | |Communications| | C | | | *.------* *-------------.* | | *.-------------* *------.* | *--.-------------------------.--* *--.-------------------------.--* . . . . . . Programs A and C are in . . . . conversation . . . . . . .Send_Data(conversation_ID, data) data . Receive(conversation_ID). [1] .------------------------>.-------------------------------->.<------------------------. . return_code=CM_OK . . data, return_code=CM_OK . [2] .<------------------------. .------------------------>. . . . . . . control information .Send_Error(conversation_ID) [3] . .<--------------------------------.<------------------------. . . . (data purged . [4] . . . by CRM) . . . . . .Send_Data(conversation_ID, data) control information . . [5] .------------------------>.-------------------------------->. . . (data purged . . . . by CRM) . . . . . . . . return_code= . . . . CM_PROGRAM_ERROR_PURGING. error notification . return_code=CM_OK . [6] .<------------------------.<--------------------------------.------------------------>. . . . . . Receive(conversation_ID). data Send_Data(conversation_ID, data) [7] .------------------------>.<--------------------------------.<------------------------. . data, return_code=CM_OK . . return_code=CM_OK . [8] .<------------------------. .------------------------>. . . . . . (further processing by both programs) . . . . . Figure 15. Reporting Errors Example 8: Error Direction and Send-Pending State Figure 16 shows how to use the SEND-PENDING state and the error_direction characteristic to resolve an ambiguous error condition that can occur when a program receives both a change of direction indication and data on a Receive call. This example applies only to a half-duplex conversation using an LU 6.2 CRM. The steps shown in Figure 16 are: +--------------+------------------------------------------------------------+ | STEP | DESCRIPTION | +--------------+------------------------------------------------------------+ | [1] and [2] | The conversation has already been established using the | | | default conversation characteristics. Program A is | | | sending data in SEND state and Program C is receiving data | | | in RECEIVE state. | +--------------+------------------------------------------------------------+ | [3] | Program A issues the Receive call to begin receiving data | | | and its end of the conversation enters RECEIVE state. | +--------------+------------------------------------------------------------+ | [4] and [5] | Program C issues a Receive and is notified of the change | | | in the conversation's state by the status_received | | | parameter, which is set to CM_SEND_RECEIVED. The | | | reception of both data and CM_SEND_RECEIVED on the same | | | Receive call places Program C's end of the conversation | | | into SEND-PENDING state. Two possible error conditions | | | can now occur: | | | | | | o Program C, while processing the data just received, | | | discovers something wrong with the data (as was | | | discussed in "Example 7: Reporting Errors"). This is | | | an error in the "receive" direction of the data. | | | | | | o Program C finishes processing the data and begins its | | | send processing. However, it discovers that it cannot | | | send a reply. For example, the received data might | | | contain a query for a particular database. Program C | | | successfully processes the query but finds that the | | | database is not available when it attempts to access | | | that database. This is an error in the "send" | | | direction of the data. | | | | | | The error_direction characteristic is used to indicate | | | which of these two conditions has occurred. A program | | | sets error_direction to CM_RECEIVE_ERROR for the first | | | case and sets error_direction to CM_SEND_ERROR for the | | | second. | +--------------+------------------------------------------------------------+ | [6] and [7] | In this example, Program C encounters a send error and | | | issues Set_Error_Direction to set the error_direction | | | characteristic to CM_SEND_ERROR. | | | | | | NOTE: The error_direction characteristic was not set in | | | the previous example because Program C did not receive | | | send control with the data and, consequently, the | | | conversation did not enter SEND-PENDING state. The | | | error_direction characteristic is relevant only when the | | | conversation is in SEND-PENDING state. | +--------------+------------------------------------------------------------+ | [8] | Program C issues Send_Error. Because CPI Communications | | | knows the conversation is in SEND-PENDING state, it checks | | | the error_direction characteristic and notifies the CPI | | | Communications component at System X which type of error | | | has occurred. | | | | | | Program A receives the error information in the | | | return_code. The return_code is set to | | | CM_PROGRAM_NO_TRUNC because Program C set error_direction | | | to CM_SEND_ERROR. If error_direction had been set to | | | CM_RECEIVE_ERROR, Program A would have received a | | | return_code of CM_PROGRAM_ERROR_PURGING (as in the | | | previous example). | +--------------+------------------------------------------------------------+ | [9] through | Program C notifies Program A of the exact nature of the | | [11] | problem and both programs continue processing. | +--------------+------------------------------------------------------------+ SYSTEM X SYSTEM Y *-------------------------------* *-------------------------------* | *-------* *--------------* | | *--------------* *-------* | | |Program| | CPI | |---------------------------| | CPI | |Program| | | | A | |Communications| | | |Communications| | C | | | *.------* *-------------.* | | *.-------------* *------.* | *--.-------------------------.--* *--.-------------------------.--* . . . . . . Programs A and C are in . . . . conversation . . . . . . .Send_Data(conversation_ID, data) data . Receive(conversation_ID). [1] .------------------------>.-------------------------------->.<------------------------. . return_code=CM_OK . . data, return_code=CM_OK . [2] .<------------------------. .------------------------>. . . . . . Receive(conversation_ID). rest of data . Receive(conversation_ID). [3] .------------------------>.-------------------------------->.<------------------------. . . .data, return_code=CM_OK, . . . status_received=CM_SEND_RECEIVED [4] . . .------------------------>. . . . . [5] . . .(program processes data, . . . . acts on request, finds . . . . an error) . . . . . . . Set_Error_Direction(conversation_ID, . . error_direction=CM_SEND_ERROR) [6] . . .<------------------------. . . . return_code=CM_OK . [7] . . .------------------------>. . return_code= . . . .CM_PROGRAM_ERROR_NO_TRUNC. error notification .Send_Error(conversation_ID) [8] .<------------------------.<--------------------------------.<------------------------. . . . return_code=CM_OK . [9] . . .------------------------>. . . . . . Receive(conversation_ID). data Send_Data(conversation_ID, data) [10].------------------------>.<--------------------------------.<------------------------. . data, return_code=CM_OK . . return_code=CM_OK . [11].<------------------------. .------------------------>. . . . . . (further processing by both programs) . . . . . Figure 16. Error Direction and Send-Pending State Examples 9-11 show the use of CPI Communications with a resource recovery interface. Because resource recovery interfaces are used to synchronize changes to all protected resources in a transaction, these examples show databases as participants in the work accomplished over CPI Communications protected conversations. These examples use CPI Communications with the resource recovery commit call. The acronym RR/SPM is used in the following examples to represent the resource recovery interface functioning in conjunction with a sync point manager. The actual resource recovery call names and return codes depend on the resource recovery interface being used. Example 9: Sending Program Issues a Commit This example shows a program sending data on a protected half-duplex conversation and issuing a resource recovery commit call. A protected conversation is one in which the sync_level has been set to CM_SYNC_POINT or CM_SYNC_POINT_NO_CONFIRM. This synchronization level tells CPI Communications that the program will use the calls of a resource recovery interface to manage the changes made to protected resources. The steps shown in Figure 17 are: +--------------+------------------------------------------------------------+ | STEP | DESCRIPTION | +--------------+------------------------------------------------------------+ | [1] through | To communicate with its partner program, Program A must | | [6] | first establish a conversation. It uses the | | | Set_Sync_Level call in step [3] to request that the | | | conversation be protected. | +--------------+------------------------------------------------------------+ | [7] | Program A sends data, and Program C issues a Receive call | | | that allows it to receive the data. | +--------------+------------------------------------------------------------+ | [8] | Both Program A and Program C get return codes indicating | | | that their respective calls have completed successfully. | +--------------+------------------------------------------------------------+ | [9] | Program A issues a resource recovery commit call to make | | | all of the updates permanent and to advance all of the | | | protected resources to a new synchronization point. | | | Program C's end of the conversation is still in RECEIVE | | | state and it issues a second Receive call. | +--------------+------------------------------------------------------------+ | [10] | On System X, a request to commit is sent from the sync | | | point manager to the CPI Communications component. The | | | CPI Communications component of System X propagates the | | | request to its counterpart, the CPI Communications | | | component of System Y, using the CPI Communications | | | conversation. Any data remaining in Program A's send | | | buffer is flushed at this point. | +--------------+------------------------------------------------------------+ | [11] | Program C's Receive call executes successfully and it | | | receives the take-commit notification from the CPI | | | Communications component of System Y. | +--------------+------------------------------------------------------------+ | [12] | Program C responds to the take-commit notification by | | | issuing a resource recovery commit call. | +--------------+------------------------------------------------------------+ | [13] | Commit-processing protocols are exchanged between the two | | | sync point managers. | +--------------+------------------------------------------------------------+ | [14] | Both Program A and Program C receive return codes that | | | indicate successful completion of the commit operation. | | | Program A can now send more data to Program C. | +--------------+------------------------------------------------------------+ SYSTEM X SYSTEM Y *--------------------------------------------------* *--------------------------------------------------* | *-------* *------* *--------------* *--------* | | *--------* *--------------* *------* *-------* | | |Program| |RR/SPM| | CPI | |Database| | | |Database| | CPI | |RR/SPM| |Program| | | | A | | | |Communications| | | | | | | |Communications| | | | C | | | *-------* *------* *--------------* *--------* | | *--------* *--------------* *------* *-------* | *--------------------------------------------------* *--------------------------------------------------* Initialize_Conversation(sym_dest_name) [1] -------------------------> return_code=CM_OK [2] <------------------------- Set_Sync_Level(CM_SYNC_POINT) [3] -------------------------> return_code=CM_OK [4] <------------------------- Logical connection setup, if logical connection Allocate not already available [5] -------------------------> <------------------------------------------> return_code=CM_OK [6] <------------------------- Conversation startup request, (Program C is started by Send_Data(data) Data node services and accepts [7] -------------------------> -------------------------------------------> the conversation) Receive <--------------------- return_code=CM_OK data, return_code=CM_OK [8] <------------------------- ---------------------> commit Receive [9] -------------> <--------------------- o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o [10] o -------------------------------------------------------> o o data, return_code=CM_OK, o status_received=CM_TAKE_COMMIT [11] o ---------------------> o Commit Protocols o o commit [12] o <---------- o o [13] o <-----------------------------------------------------------------> o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o return_code=ok return_code=ok [14] <------------- ----------> (further processing by both programs) Figure 17. Establishing a Protected Conversation and Issuing a Successful Commit Example 10: A Successful Commit with Conversation State Change Figure 18 shows a successful commit with a conversation state change on a half-duplex conversation. The steps shown in Figure 18 are: +--------------+------------------------------------------------------------+ | STEP | DESCRIPTION | +--------------+------------------------------------------------------------+ | [1] | Program C's end of a protected conversation is in RECEIVE | | | state. It issues a Receive call. | +--------------+------------------------------------------------------------+ | [2] and [3] | Program A wants its side of the CPI Communications | | | conversation to be changed from SEND to RECEIVE state | | | after it issues its next commit call. To do this, Program | | | A uses the Set_Prepare_To_Receive_Type call to set the | | | prepare_to_receive_type conversation characteristic to | | | CM_PREP_TO_RECEIVE_SYNC_LEVEL. | +--------------+------------------------------------------------------------+ | [4] and [5] | Program A issues a Prepare_To_Receive call. Because the | | | prepare_to_receive_type conversation characteristic is set | | | to CM_PREP_TO_RECEIVE_SYNC_LEVEL, Program A's side of the | | | conversation is now in DEFER-RECEIVE state until Program A | | | issues a commit call. | +--------------+------------------------------------------------------------+ | [6] | Program A issues a resource recovery commit call in | | | DEFER-RECEIVE state. If the call completes successfully, | | | Program A's end of the conversation will be placed in | | | RECEIVE state. | +--------------+------------------------------------------------------------+ | [7] | The sync point manager of System X sends Program A's | | | request to commit to the CPI Communications component of | | | System X, which passes it to the CPI Communications | | | component of System Y. Any data remaining in Program A's | | | send buffer is flushed at this point. | +--------------+------------------------------------------------------------+ | [8] | Because Program A was in DEFER-RECEIVE state when it | | | issued the commit call, the CPI Communications component | | | of System Y returns the take-commit notification to | | | Program C as a CM_TAKE_COMMIT_SEND value in the | | | status_received parameter. This value means that if | | | Program C completes a commit call successfully, its end of | | | the conversation will be placed in SEND state. | +--------------+------------------------------------------------------------+ | [9] | Program C responds to the take-commit notification with a | | | resource recovery commit call. | +--------------+------------------------------------------------------------+ | [10] through | The database managers and the sync point managers on the | | [12] | two systems participate in the protocol flows necessary to | | | accomplish the commit. | +--------------+------------------------------------------------------------+ | [13] | Both commit calls end successfully. | +--------------+------------------------------------------------------------+ | [14] | Program A's end of the conversation is now in RECEIVE | | | state and it issues a Receive call. Program C's end of | | | the conversation is in SEND state and it issues a | | | Send_Data call. | | | | | | NOTE: If the commit is unsuccessful and responses | | | indicating backout are received on the commit calls | | | by Programs A and C, the conversation states for | | | Programs A and C are reset to their values at the | | | time of the last sync point. | | | | | | The program can retrieve the current conversation | | | state by using the CPI Communications | | | Extract_Conversation_State call. | | | | +--------------+------------------------------------------------------------+ SYSTEM X SYSTEM Y *--------------------------------------------------* *--------------------------------------------------* | *-------* *------* *--------------* *--------* | | *--------* *--------------* *------* *-------* | | |Program| |RR/SPM| | CPI | |Database| | | |Database| | CPI | |RR/SPM| |Program| | | | A | | | |Communications| | | | | | | |Communications| | | | C | | | *-------* *------* *--------------* *--------* | | *--------* *--------------* *------* *-------* | *--------------------------------------------------* *--------------------------------------------------* Programs A and C are in conversation Receive [1] <--------------------- Set_Prepare_To_Receive_Type (CM_PREP_TO_RECEIVE_SYNC_LEVEL) [2] -------------------------> return_code=CM_OK [3] <------------------------- Prepare_To_Receive [4] -------------------------> return_code=CM_OK [5] <------------------------- commit [6] -------------> o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o [7] o -------------------------------------------------------> o o o o data, return_code=CM_OK, o status_received=CM_TAKE_COMMIT_SEND [8] o ---------------------> o Commit Protocols o o commit [9] o <---------- o o [10] o <---------------------> o o o [11] o <-----------------------------------------------------------------> o o o [12] o <--------------------> o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o return_code=ok return_code=ok [13] <------------- ----------> Receive Send_Data [14] -------------------------> <--------------------- (further processing by both programs) Figure 18. A Successful Commit with Conversation State Change Example 11: Conversation Deallocation before the Commit Call Figure 19 shows a commit call issued after a CPI Communications Deallocate call on a half-duplex conversation. The steps shown in Figure 19 are: +--------------+------------------------------------------------------------+ | STEP | DESCRIPTION | +--------------+------------------------------------------------------------+ | [1] | Program C's end of a protected conversation is in RECEIVE | | | state. It issues a Receive call. | +--------------+------------------------------------------------------------+ | [2] and [3] | Program A wants to deallocate the conversation after | | | issuing a commit call. To accomplish this, Program A | | | chooses to issue a Set_Deallocate_Type call with the | | | deallocate_type parameter set to CM_DEALLOCATE_SYNC_LEVEL. | +--------------+------------------------------------------------------------+ | [4] and [5] | Program A next issues a Deallocate call. CPI | | | Communications completes the call, and places Program A's | | | side of the conversation in DEFER-DEALLOCATE state. | +--------------+------------------------------------------------------------+ | [6] | Program A issues a resource recovery commit call. If the | | | call completes successfully, Program A's end of the | | | conversation will be deallocated (put in RESET state). | +--------------+------------------------------------------------------------+ | [7] | The sync point manager of System X sends Program A's | | | request to commit to the CPI Communications component of | | | System X, which passes it to the CPI Communications | | | component of System Y. Any data remaining in Program A's | | | send buffer is flushed at this point. | +--------------+------------------------------------------------------------+ | [8] | Because Program A's end of the conversation was in | | | DEFER-DEALLOCATE state when Program A issued the commit | | | call, Program C receives the take-commit notification as a | | | CM_TAKE_COMMIT_DEALLOCATE value in the status_received | | | parameter of its Receive call. | +--------------+------------------------------------------------------------+ | [9] | Program C responds to the take-commit notification by | | | issuing a resource recovery commit call. The | | | CM_TAKE_COMMIT_DEALLOCATE value means that if this commit | | | is successful, Program C's end of the conversation will be | | | deallocated (put in RESET state). | +--------------+------------------------------------------------------------+ | [10] through | The database managers and the sync point managers on the | | [12] | two systems participate in the protocol flows necessary to | | | accomplish the commit. | +--------------+------------------------------------------------------------+ | [13] | Both commit calls end successfully. | | | | | | NOTE: If the commit is unsuccessful and responses | | | indicating backout are received on the commit calls | | | by Programs A and C, the conversation is not | | | deallocated. The conversation states for Programs | | | A and C are reset to their values at the time of | | | the last sync point. | | | | | | The program can retrieve the current conversation | | | state by using the CPI Communications | | | Extract_Conversation_State call. | | | | +--------------+------------------------------------------------------------+ SYSTEM X SYSTEM Y *--------------------------------------------------* *--------------------------------------------------* | *-------* *------* *--------------* *--------* | | *--------* *--------------* *------* *-------* | | |Program| |RR/SPM| | CPI | |Database| | | |Database| | CPI | |RR/SPM| |Program| | | | A | | | |Communications| | | | | | | |Communications| | | | C | | | *-------* *------* *--------------* *--------* | | *--------* *--------------* *------* *-------* | *--------------------------------------------------* *--------------------------------------------------* Programs A and C are in conversation Receive [1] <--------------------- Set_Deallocate_Type (CM_DEALLOCATE_SYNC_LEVEL) [2] -------------------------> return_code=CM_OK [3] <------------------------- Deallocate [4] -------------------------> return_code=CM_OK [5] <------------------------- commit [6] -------------> o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o [7] o -------------------------------------------------------> o o o o data, return_code=CM_OK, o status_received=CM_TAKE_COMMIT_DEALLOCATE [8] o ---------------------> o Commit Protocols o o commit [9] o <---------- o o [10] o <---------------------> o o o [11] o <-----------------------------------------------------------------> o o o [12] o <--------------------> o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o return_code=ok return_code=ok [13] <------------- ----------> (the conversation is deallocated) Figure 19. Conversation Deallocation Precedes the Commit Call Example 12: Accepting Multiple Conversations Using Blocking Calls Figure 20 shows an example of a program that uses blocking calls to accept multiple incoming half-duplex conversations. The steps shown in Figure 20 are: +--------------+------------------------------------------------------------+ | STEP | DESCRIPTION | +--------------+------------------------------------------------------------+ | [1] | Program C is started as the result of a local operation | | | and informs node services that it is ready to accept | | | conversation startup requests for a program named | | | "PAYROLL" by issuing the Specify_Local_TP_Name (CMSLTP) | | | call. | +--------------+------------------------------------------------------------+ | [2] | Program C initializes the conversation on the accepting | | | side by issuing the Initialize_For_Incoming call. Upon | | | successful completion of this call, the conversation is in | | | INITIALIZE-INCOMING state. | +--------------+------------------------------------------------------------+ | [3] | Program C accepts the incoming conversation with the | | | Accept_Incoming call. The conversation_ID returned on the | | | Initialize_For_Incoming call is supplied on the | | | Accept_Incoming call. This call blocks until the | | | conversation startup request arrives. The processing_mode | | | characteristic is initialized to the default value of | | | CM_BLOCKING by the Initialize_For_Incoming call. | +--------------+------------------------------------------------------------+ | [4] | Program A uses the Initialize_Conversation call to | | | initialize conversation characteristics for an outgoing | | | conversation to Program C. In this example, the TP name | | | characteristic is set to "PAYROLL". | +--------------+------------------------------------------------------------+ | [5] | Program A allocates the conversation, supplying the | | | conversation_ID returned by the Initialize_Conversation | | | call. In this example, the conversation startup request | | | is sent as part of the Allocate processing. | | | | | | When System Y receives the conversation startup request, | | | the Accept_Incoming call completes. A new context is | | | created, and the conversation is assigned to that context. | | | Node services sets Program C's current context to the new | | | context. | +--------------+------------------------------------------------------------+ | [6] and [7] | | | | Program C is ready to accept a second conversation, and it | | | issues the Initialize_For_Incoming and Accept_Incoming | | | calls. Again, the Accept_Incoming call blocks until a | | | conversation startup request arrives at System Y. | +--------------+------------------------------------------------------------+ | [8] and [9] | Program B on System Z initializes and allocates a | | | conversation to "PAYROLL". | | | | | | When System Y receives the conversation startup request, | | | the Accept_Incoming call completes with a return code of | | | CM_OK. Another new context is created and the new | | | conversation is assigned to that context. Node services | | | sets Program C's current context to the new context. | +--------------+------------------------------------------------------------+ System X System Y *-------------------------------* *-------------------------------* | *-------* *--------------* | | *--------------* *-------* | | |Program| | CPI | |---------------------------| | CPI | |Program| | | | A | |Communications| | | |Communications| | C | | | *.------* *-------------.* | | *.-------------* *------.* | *--.-------------------------.--* *--.-------------------------.--* . . . . . . . Specify_Local_TP_Name ("PAYROLL") [1] . . .<------------------------. . . . return_code=CM_OK . . . .------------------------>. . . . Initialize_For_Incoming . [2] . . .<------------------------. . . conversation_ID_1, return_code=CM_OK . . .------------------------>. . . Accept_Incoming(conversation_ID_1) [3] . . .<------------------------. Initialize_Conversation(sym_dest_name) . . [4] .------------------------>. . . conversation_ID, return_code=CM_OK . . .<------------------------. . . .Allocate(conversation_ID). conversation startup request . return_code=CM_OK . [5] .------------------------>.-------------------------------->.------------------------>. . return_code=CM_OK . . . .<------------------------. . (Program C continues . . (Program A continues . . conversation with . . conversation with . . Program A) . . Program C) . . . . . . . . . . . . . . . . . . . . . . . . . . Initialize_For_Incoming . [6] . . .<------------------------. . . conversation_ID_2, return_code=CM_OK . . .------------------------>. . . Accept_Incoming(conversation_ID_2) [7] . . .<------------------------. System Z . . *-------------------------------* . . | *-------* *--------------* | . . | |Program| | CPI | | . . | | B | |Communications| | . . | *.------* *-------------.* | . . *--.-------------------------.--* . . . . . . Initialize_Conversation (sym_dest_name) . . [8] .------------------------>. . . conversation_ID, return_code=CM_OK . . .<------------------------. . . .Allocate(conversation_ID). conversation startup request . return_code=CM_OK . [9] .------------------------>.-------------------------------->.------------------------>. . return_code=CM_OK . . . .<------------------------. . (Program C continues . . . . conversations with . . (Program B continues . . Programs A & B) . . conversation with . . . . Program C) . . . . . . . Figure 20. Accepting Multiple Conversations Using Blocking Calls Example 13: Accepting Multiple Conversations Using Conversation-Level Non-Blocking Calls Figure 21 shows an example of a program that uses conversation-level non-blocking calls to accept multiple incoming half-duplex conversations. The steps shown in Figure 21 are: +--------------+------------------------------------------------------------+ | STEP | DESCRIPTION | +--------------+------------------------------------------------------------+ | [1] | Program C is started as the result of a local operation | | | and informs node services that it is ready to accept | | | conversation startup requests for a program named | | | "PAYROLL" by issuing the Specify_Local_TP_Name call. | +--------------+------------------------------------------------------------+ | [2] | | | | Program C prepares for an incoming conversation by issuing | | | the Initialize_For_Incoming call. Upon successful | | | completion of this call, the conversation is in | | | INITIALIZE-INCOMING state. | | | | | | NOTE: The Initialize_For_Incoming call is required in | | | this case since the conversation will be accepted in a | | | non-blocking processing mode. The Accept_Conversation | | | call cannot be used because it is a blocking call. A | | | conversation_ID is needed to set the processing mode and | | | none is available prior to issuing the Accept_Conversation | | | call. | +--------------+------------------------------------------------------------+ | [3] and [4] | Program C sets the processing mode for the conversation to | | | non-blocking and issues the Accept_Incoming call. Since | | | no conversation is currently available, | | | CM_OPERATION_INCOMPLETE is returned. | +--------------+------------------------------------------------------------+ | [5] | Program C waits for an incoming conversation with the | | | Wait_For_Conversation call. | +--------------+------------------------------------------------------------+ | [6] | Program A prepares to allocate a conversation by issuing | | | Initialize_Conversation to initialize the conversation | | | characteristics. In this example, the TP name | | | characteristic is set to "PAYROLL". | +--------------+------------------------------------------------------------+ | [7] | Program A allocates a conversation. In this example, the | | | conversation startup request is sent as part of the | | | Allocate processing. | | | | | | When System Y receives the conversation startup request, | | | the Wait_For_Conversation call completes, returning | | | conversation_ID_1. A new context is created, and the | | | conversation is assigned to that context. The program's | | | current context is not changed. | +--------------+------------------------------------------------------------+ | [8] | Program C issues another Initialize_For_Incoming call to | | | prepare to accept a second incoming conversation. | +--------------+------------------------------------------------------------+ | [9] and [10] | The Set_Processing_Mode call is used to set the processing | | | mode for the conversation to non-blocking prior to issuing | | | the Accept_Incoming call. Since there is no conversation | | | startup request to receive, the call completes with | | | CM_OPERATION_INCOMPLETE. | +--------------+------------------------------------------------------------+ | [11] | Program C again issues a Wait_For_Conversation call to | | | wait for activity on either conversation_ID_1 or | | | conversation_ID_2. | +--------------+------------------------------------------------------------+ | [12] | Program B on System Z initializes conversation | | | characteristics in preparation for allocating a | | | conversation. In this example, the TP name characteristic | | | is set to "PAYROLL". | +--------------+------------------------------------------------------------+ | [13] | Program B allocates a conversation to Program C. In this | | | example, the conversation startup request is sent as part | | | of the Allocate processing. | | | | | | When System Y receives the conversation startup request, | | | the outstanding Wait_For_Conversation call completes, | | | returning conversation_ID_2. Another new context is | | | created and the new conversation is assigned to that | | | context. The program's current context is not changed. | +--------------+------------------------------------------------------------+ System X System Y *-------------------------------* *-------------------------------* | *-------* *--------------* | | *--------------* *-------* | | |Program| | CPI | | | | CPI | |Program| | | | A | |Communications| | | |Communications| | C | | | *.------* *-------------.* | | *.-------------* *------.* | *--.-------------------------.--* *--.-------------------------.--* . . . . . . . Specify_Local_TP_Name ("PAYROLL") [1] . . .<------------------------. . . . return_code=CM_OK . . . .------------------------>. . . . Initialize_For_Incoming . [2] . . .<------------------------. . . conversation_ID_1, return_code=CM_OK . . .------------------------>. . . . Set_Processing_Mode . . . (conversation_ID_1, CM_NON_BLOCKING) [3] . . .<------------------------. . . . return_code=CM_OK . . . .------------------------>. . . Accept_Incoming(conversation_ID_1) [4] . . .<------------------------. . . return_code=CM_OPERATION_INCOMPLETE . . .------------------------>. . . . Wait_For_Conversation . [5] . .<------------------------. Initialize_Conversation(sym_dest_name) . . [6] .------------------------>. . . . return_code=CM_OK . . . .<------------------------. conversation conversation_ID_1, return_code=CM_OK, .Allocate(conversation_ID). startup request .conversation_return_code=CM_OK [7] .------------------------>.-------------------------------->.------------------------>. . return_code=CM_OK . . (Program C continues . .<------------------------. . conversation with . . . . Program A) . . . . . . . .Initialize_For_Incoming . [8] . . .<------------------------. . . conversation_ID_2, return_code=CM_OK . (Program A continues . .------------------------>. . conversation with . . Set_Processing_Mode . . Program C) . (conversation_ID_2, CM_NON_BLOCKING) [9] .<------------------------. . return_code=CM_OK . .------------------------>. Accept_Incoming(conversation_ID_2) [10] .<------------------------. return_code=CM_OPERATION_INCOMPLETE .------------------------>. . Wait_For_Conversation . [11] System Z .<------------------------. *-------------------------------* . . | *-------* *--------------* | . . | |Program| | CPI | | . . | | B | |Communications| | . . | *.------* *-------------.* | . . *--.-------------------------.--* . . . . . . Initialize_Conversation (sym_dest_name) . . [12].------------------------>. . . conversation_ID, return_code=CM_OK . . .<------------------------. conversation .conversation_ID_2, return_code=CM_OK, .Allocate(conversation_ID). startup request .conversation_return_code=CM_OK [13].------------------------>.-------------------------------->.------------------------>. . return_code=CM_OK . . (Program C continues . .<------------------------. . conversation with . . (Program B continues . . Programs A & B) . . conversation with . . . . Program C) . . . . . . . Figure 21. Accepting Multiple Conversations Using Non-Blocking Calls Example 14: Establishing a Full-Duplex Conversation Figure 22 is an example of how a full-duplex conversation is set up. The steps shown in Figure 22 are: +--------------+-----------------------------------------------------------------------------------------------------------------+ | STEP | DESCRIPTION | +--------------+-----------------------------------------------------------------------------------------------------------------+ | [1] and [2] | Program A initializes a conversation using the Initialize_Conversation call. | +--------------+-----------------------------------------------------------------------------------------------------------------+ | [3] and [4] | The default value of the send_receive_mode characteristic is set to CM_HALF_DUPLEX. Since the program wants to | | | have a full-duplex conversation, it issues the Set_Send_Receive_Mode call to set the send_receive_mode | | | characteristic to CM_FULL_DUPLEX. | +--------------+-----------------------------------------------------------------------------------------------------------------+ | [5] through | Program A allocates the full-duplex conversation. Program A's conversation state changes from INITIALIZE state | | [7] | to SEND_RECEIVE state, and Program A can begin to send and receive data. | +--------------+-----------------------------------------------------------------------------------------------------------------+ | [8] and [9] | Program A sends data with the Send_Data call and receives a return_code of CM_OK. The request for a | | | conversation is sent at this time, and it carries the send_receive_mode. | | | | +--------------+-----------------------------------------------------------------------------------------------------------------+ | [10] and | The remote system starts Program C. The conversation on Program C's side is in RESET state. Program C accepts | | [11] | the conversation, and the conversation state changes to SEND-RECEIVE state. | | | | | | Some of Program C's conversation characteristics are based on information contained in the conversation startup | | | request. In particular, the send_receive_mode is set to CM_FULL_DUPLEX. | +--------------+-----------------------------------------------------------------------------------------------------------------+ | [12] and | Progam C issues Extract_Send_Receive_Mode to determine whether the conversation is half-duplex or full-duplex; | | [13] | the returned send_receive_mode value indicates that it is a full-duplex conversation. | +--------------+-----------------------------------------------------------------------------------------------------------------+ | [14] and | Once its end of the conversation is in SEND-RECEIVE state, Program C begins whatever processing role it and | | [15] | Program A have agreed upon. In this case, Program C receives data with a Receive call. | +--------------+-----------------------------------------------------------------------------------------------------------------+ SYSTEM X SYSTEM Y *-------------------------------* *-------------------------------* | *-------* *--------------* | | *--------------* *-------* | | |Program| | CPI | |---------------------------| | CPI | |Program| | | | A | |Communications| | | |Communications| | C | | | *.------* *-------------.* | | *.-------------* *------.* | *--.-------------------------.--* *--.-------------------------.--* . . . . Initialize_Conversation (sym_dest_name) . . [1] .------------------------>. . . conversation_ID, return_code=CM_OK . . [2] .<------------------------. . . .Set_Send_Receive_Mode . . . . (CM_FULL_DUPLEX) . . . [3] .------------------------>. . . . return_code=CM_OK . . . [4] .<------------------------. . . .Allocate(conversation_ID). . . [5] .------------------------>. logical connection setup, . . . . if logical connection . . . . not already available . . [6] . .<------------------------------->. . . return_code=CM_OK . . . [7] .<------------------------. . . .Send_Data(conversation_ID, conversation startup request, . . . data) . data . . [8] .------------------------>.-------------------------------->. . . return_code=CM_OK . . . [9] .<------------------------. .(Program C is started by . . . . node services) . . . . Accept_Conversation . [10]. . .<------------------------. . . conversation_ID, return_code=CM_OK [11]. . .------------------------>. . . .Extract_Send_Receive_Mode . . (conversation_ID) [12]. . .<------------------------. . . . send_receive_mode= . . . . CM_FULL_DUPLEX . [13]. . .------------------------>. . . . Receive(conversation_ID). [14]. . .<------------------------. . . . data, return_code=CM_OK . [15]. . .------------------------>. . . . . . (Program A continues) . . (Program C continues) . . . . . . . . . . . . . Figure 22. Establishing a Full-Duplex Conversation Example 15: Using a Full-Duplex Conversation Figure 23 shows an example of how a full-duplex conversation is used to send and receive data. The steps shown in Figure 23 are: +--------------+-----------------------------------------------------------------------------------------------------------------+ | STEP | DESCRIPTION | +--------------+-----------------------------------------------------------------------------------------------------------------+ | [1] | Programs A and C are in a full-duplex conversation. Both Program A's and Program C's ends of the conversation | | | are in SEND-RECEIVE state. Both programs can issue a Send_Data call or a Receive call. In this example, | | | Program A wants to receive a response to some previous request it sent to Program C, and so it issues the | | | Receive call. | +--------------+-----------------------------------------------------------------------------------------------------------------+ | [2] | Program C issues a Send_Data call to send data to Program A. In this example, the data is sent to Program A | | | right away. | +--------------+-----------------------------------------------------------------------------------------------------------------+ | [3] | Program A receives data from program C. | +--------------+-----------------------------------------------------------------------------------------------------------------+ | [4] and [5] | Both programs issue Send_Data calls, and the calls complete successfully. | +--------------+-----------------------------------------------------------------------------------------------------------------+ | [6] and [7] | Both programs issue Receive calls, and the Receive calls complete successfully. The state of the conversation | | | at Program A and Program C continues to be SEND-RECEIVE state. | +--------------+-----------------------------------------------------------------------------------------------------------------+ SYSTEM X SYSTEM Y *-------------------------------* *-------------------------------* | *-------* *--------------* | | *--------------* *-------* | | |Program| | CPI | |---------------------------| | CPI | |Program| | | | A | |Communications| | | |Communications| | C | | | *.------* *-------------.* | | *.-------------* *------.* | *--.-------------------------.--* *--.-------------------------.--* . . Programs A and C are in . . . . full-duplex conversation . . . . . . .Receive(conversation_ID) . . . [1] .------------------------>. data Send_Data(conversation_ID,data). [2] .data, return_code=CM_OK .<--------------------------------.<------------------------. [3] .<------------------------. . return_code=CM_OK . [4] . . .------------------------>. .Send_Data(conversation_ID, data) data . Send_Data(conversation_ID,data) [5] .------------------------>.---------------\ /-------.<------------------------. . return_code=CM_OK . \ / .return_code=CM_OK . [6] .<------------------------. \ / .------------------------>. . . / \ . . . Receive(conversation_ID). data / \ . Receive(conversation_ID). [7] .------------------------>.<--------------/ \------>.<------------------------. . data, return_code=CM_OK . . data, return_code=CM_OK . .<------------------------. .------------------------>. . . . . . (Program A continues) . . (Program C continues) . . . . . . . . . . . . . . . . . Figure 23. Using a Full-Duplex Conversation Example 16: Terminating a Full-Duplex Conversation Figure 24 shows an example of how a full-duplex conversation can be terminated. The steps shown in Figure 24 are: +--------------+-----------------------------------------------------------------------------------------------------------------+ | STEP | DESCRIPTION | +--------------+-----------------------------------------------------------------------------------------------------------------+ | [1]and [2] | The state of the conversation at Program A and Program C is SEND-RECEIVE state. Program A issues a Send_Data | | | call, which completes successfully. Note that the data is not actually sent to the partner program but is | | | buffered. | +--------------+-----------------------------------------------------------------------------------------------------------------+ | [3] and [4] | Program A has finished sending all data, and issues a Deallocate call. | | | | | | When the call completes successfully, the data in the CRM's buffers is flushed to the partner along with a | | | deallocation notification. The conversation state at Program A's end now makes a transition to RECEIVE-ONLY | | | state. Program A can no longer send any data on this conversation. | +--------------+-----------------------------------------------------------------------------------------------------------------+ | [5]and [6] | Program C's end is in SEND-RECEIVE state, and Program C issues a Receive call. Program C gets back data and a | | | return code of CM_DEALLOCATED_NORMAL. Program C's end of the conversation now enters SEND_ONLY state. Program | | | C can no longer receive any data on this conversation. | +--------------+-----------------------------------------------------------------------------------------------------------------+ | [7] | Program C issues a Send_Data call, and the data gets sent to Program A. | +--------------+-----------------------------------------------------------------------------------------------------------------+ | [8] and [9] | Program A issues a Receive call and gets data. | +--------------+-----------------------------------------------------------------------------------------------------------------+ | [10] | Program C's end of the conversation is in SEND-ONLY state, and Program C has finished sending data. It issues | | | a Deallocate call for the conversation_ID. | | | | | | Program A issues a Receive call to receive data. | +--------------+-----------------------------------------------------------------------------------------------------------------+ | [11] | Program A gets a return code of CM_DEALLOCATED_NORMAL, and its end of the conversation goes from RECEIVE-ONLY | | | state to RESET state. | | | | | | Program C gets a return code of CM_OK for the Deallocate call it issued earlier. Its end of the conversation | | | goes from SEND-ONLY state to RESET state. | +--------------+-----------------------------------------------------------------------------------------------------------------+ SYSTEM X SYSTEM Y *-------------------------------* *-------------------------------* | *-------* *--------------* | | *--------------* *-------* | | |Program| | CPI | |---------------------------| | CPI | |Program| | | | A | |Communications| | | |Communications| | C | | | *.------* *-------------.* | | *.-------------* *------.* | *--.-------------------------.--* *--.-------------------------.--* . . Programs A and C are in . . . . full-duplex conversation . . . . . . .Send_Data(conversation_ID, data) . . [1] .------------------------>. . . . return_code=CM_OK . . . [2] .<------------------------. . . . . remaining data, . . .Deallocate(conversation_ID) deallocation notification . . [3] .------------------------>.-------------------------------->. . . return_code=CM_OK . . . [4] .<------------------------. . . . . . Receive(conversation_ID). [5] . . .<------------------------. . . . data, . . . .return_code=CM_DEALLOCATED_NORMAL [6] . . .------------------------>. . . data Send_Data(conversation_ID, data) [7] . Receive(conversation_ID).<--------------------------------.<------------------------. [8] .------------------------>. . return_code=CM_OK . . data, return_code=CM_OK . .------------------------>. [9] .<------------------------. . . . Receive(conversation_ID). deallocation notification .Deallocate(conversation_ID) [10].------------------------>.<--------------------------------.<------------------------. .return_code=CM_DEALLOCATED_NORMAL .return_code=CM_OK . [11].<------------------------. .------------------------>. . (conversation ends) . . (conversation ends) . . . . . Figure 24. Terminating a Full-Duplex Conversation Example 17: Using Queue-Level Non-Blocking Figure 25 shows an example of a program that uses queue-level non-blocking. The steps shown in Figure 25 are: +--------------+-----------------------------------------------------------------------------------------------------------------+ | STEP | DESCRIPTION | +--------------+-----------------------------------------------------------------------------------------------------------------+ | [1] | In a full-duplex conversation, the state of the conversation at Program A and Program C is SEND-RECEIVE state. | | | Program A issues Set_Queue_Processing_Mode to set the processing mode for its Send queue to CM_NON_BLOCKING. | | | It also specifies a user field, "uf_send", as a pointer to the parameters on the Send_Data call. When the | | | Set_Queue_Processing_Mode call completes successfully, Program A receives an OOID, "OOID1", that is unique to | | | the Send queue. | +--------------+-----------------------------------------------------------------------------------------------------------------+ | [2] | Program A also issues Set_Queue_Processing_Mode to set the processing mode for its Receive queue to | | | CM_NON_BLOCKING. This time it specifies a user field, "uf_rcv", as a pointer to the parameters on the Receive | | | call. When the Set_Queue_Processing_Mode call completes successfully, Program A receives an OOID, "OOID2", | | | that is unique to the Receive queue. | +--------------+-----------------------------------------------------------------------------------------------------------------+ | [3] | Program A issues a Receive call. Because no incoming data is ready to be received, the call is suspended and | | | returns CM_OPERATION_INCOMPLETE. | +--------------+-----------------------------------------------------------------------------------------------------------------+ | [4] | Program A issues a Send_Data call, which also returns CM_OPERATION_INCOMPLETE because of transmission buffer | | | shortage. | +--------------+-----------------------------------------------------------------------------------------------------------------+ | [5] | Program C sends data to Program A, which will satisfy the outstanding Receive call. | +--------------+-----------------------------------------------------------------------------------------------------------------+ | [6] | Program A issues Wait_For_Completion to wait for both outstanding operations. It does so by specifying "OOID1" | | | and "OOID2" in the OOID_list. To indicate that the Receive call has completed, the Wait_For_Completion call | | | returns an index value 2 and "uf_rcv", which are associated with the Receive call. Program A can now use the | | | returned user field, "uf_rcv", to examine the return code of the Receive call. | +--------------+-----------------------------------------------------------------------------------------------------------------+ System X System Y *-------------------------------* *-------------------------------* | *-------* *--------------* | | *--------------* *-------* | | |Program| | CPI | |---------------------------| | CPI | |Program| | | | A | |Communications| | | |Communications| | C | | | *.------* *-------------.* | | *.-------------* *------.* | *--.-------------------------.--* *--.-------------------------.--* . . Program A and C are in . . . . full-duplex conversation . . . . . . .Set_Queue_Processing_Mode. . . .(conversation_ID, CM_SEND_QUEUE, . . .CM_NON_BLOCKING, uf_send). . . [1] .------------------------>. . . . OOID1, return_code=CM_OK. . . .<------------------------. . . . . . . .Set_Queue_Processing_Mode. . . .(conversation_ID, CM_RECEIVE_QUEUE, . . . CM_NON_BLOCKING, uf_rcv). . . [2] .------------------------>. . . . OOID2, return_code=CM_OK. . . .<------------------------. . . . . . . .Receive(conversation_ID) . . . [3] .------------------------>. . . . return_code . . . . =CM_OPERATION_INCOMPLETE. . . .<------------------------. . . . . . . .Send_Data(conversation_ID, data) . . [4] .------------------------>. . . . return_code . . . . =CM_OPERATION_INCOMPLETE. . . .<------------------------. . . . . data Send_Data(conversation_ID, data) [5] . .<--------------------------------.<------------------------. . . . . .Wait_For_Completion( . . . .[OOID1,OOID2], 2, timeout) . . [6] .------------------------>. . . . [2], 1, [uf_rcv], . . . . return_code=CM_OK . . . .<------------------------. . . . . . . . . . . Figure 25. Using Queue-Level Non-Blocking ---------------------------------------------------------------------------------------------------------------------------------- Chapter 4. Call Reference Section This chapter describes the CPI Communications calls. For each call, this chapter provides the function of the call and any optional setup calls, which can be issued before the call being described. In addition, the following information is provided if it applies: o FORMAT The format used to program the call. NOTE: The actual syntax used to program the calls in this chapter depends on the programming language used. See "Call Syntax" for specifics. o PARAMETERS The parameters that are required for the call. Parameters are identified as input parameters (that is, set by the calling program and used as input to CPI Communications) or output parameters (that is, set by CPI Communications before returning control to the calling program). o STATE CHANGES The changes in the conversation state that can result from this call. See "Program Flow--States and Transitions" for more information on conversation states. o USAGE NOTES Additional information that applies to the call. o RELATED INFORMATION Where to find additional information related to the call. ----------- Call Syntax CPI Communications calls can be made from application programs written in a number of high-level programming languages: o Application Generator (CSP) o C o COBOL o FORTRAN o PL/I o REXX o RPG In addition to the above programming languages, other languages may support CPI Communications calls in certain environments. This book uses a general call format to show the name of the CPI Communications call and the parameters used. An example of that format is provided below: CALL CMPROG (parm0, parm1, parm2, . . parmN) where "CMPROG" is the name of the call, and "parm0, parm1, parm2," and "parmN" represent the parameter list described in the individual call description. This format would be translated into the following syntax for each of the supported languages: APPLICATION GENERATOR (CSP) "CALL CMPROG parm0,parm1,parm2,...parmN" C "CMPROG (parm0,parm1,parm2,...parmN)" COBOL "CALL "CMPROG" USING parm0,parm1,parm2,...parmN" FORTRAN "CALL CMPROG (parm0,parm1,parm2,...parmN)" PL/I "CALL CMPROG (parm0,parm1,parm2,...parmN)" REXX "ADDRESS CPICOMM 'CMPROG parm0 parm1 parm2 ... parmN'" RPG CALL 'CMPROG' PARM parm1 PARM parm2 . . . . . . PARM parmN ----------------------------------- Programming Language Considerations This section describes some programming language considerations a programmer should keep in mind when writing and running a program that uses CPI Communications. Sample pseudonym files are provided in Appendix E, "Pseudonym Files" on page 2 for several programming languages. Customized pseudonym files or datasets for supported programming languages may be available on systems that implement CPI Communications. NOTE: Some programming language processors (compilers and interpreters) may not support the asynchronous modification of a program's variables by another process. Use of non-blocking operations is not possible by programs using these language processors. Application Generator Cross System Product (CSP) is the implementing product for the SAA Application Generator common programming interface. No special considerations apply to CPI Communications programs written in CSP. C The following notes apply to C programs using CPI Communications calls: o When passing an integer value as a parameter, prefix the parameter name with an ampersand (&) so that the value is passed by reference. o To pass a parameter as a string literal, surround it with double quotes rather than single quotes. o To enable asynchronous updates of program variables, the return parameters on a non-blocking call must be declared using the "volatile" qualifier as defined in ANSI C. COBOL The following notes apply to COBOL programs using CPI Communications calls: o Because COBOL does not support the underscore character (_), the underscores in COBOL pseudonyms are replaced with dashes (-). For example, COBOL programmers use CM-IMMEDIATE as a pseudonym value name in their programs instead of CM_IMMEDIATE. o Each argument in the parameter list must be called (listed) by name. o Each variable in the parameter list must be level 01. o Number variables must be full words (at least five but less than ten "9"s) and they must be COMP-4, not zoned decimal. FORTRAN The following notes apply to FORTRAN programs using CPI Communications calls: o The EXTERNAL statement may be required for each CPI Communications call that is issued, depending on the environment being used. The PRAGMA statement may also be required. EXTERNAL and PRAGMA statements may be included in the FORTRAN pseudonym file provided for a given environment. o To enable asynchronous updates of program variables, the return parameters on a non-blocking call must be declared using the "VOLATILE" qualifier. PL/I The following notes apply to PL/I programs using CPI Communications calls: o Numbers in the parameter list must be declared, initialized, and passed as variables. o ENTRY declaration statements should be used for each CPI Communications call that is issued. ENTRY declaration statements may be included in the PL/I pseudonym file provided for a given environment. o To enable asynchronous updates of program variables, the return parameters on a non-blocking call must be declared using the "ABNORMAL" qualifier. REXX REXX is the implementing product for the REXX common programming interface. The following notes apply to REXX programs using CPI Communications calls: o REXX programs must use the ADDRESS CPICOMM statement to access CPI Communications calls. These calls are not accessible through the REXX CALL statement interface. o Character strings returned by CPI Communications calls are stored in variables with the maximum allowable length. (Maximum lengths are shown in Appendix A, "Variables and Characteristics.") However, there is a returned length variable associated with the returned character string, which allows use of the REXX function LEFT(returned_char_string,returned_length) to get the correct amount of data. (This note does not apply to returned fixed-length character strings. For instance, a conversation_ID returned from the Accept_Conversation call always has a length of 8 bytes.) RPG The following note applies to RPG programs using CPI Communications calls: o Because RPG supports only variable names with lengths of 1 to 6 characters, the pseudonym names for RPG have been abbreviated. For example, RPG programmers should use IMMED as a pseudonym name in their programs instead of CM_IMMEDIATE. ------------------------------ How to Use the Call References Here is an example of how the information in this chapter can be used in connection with the material in the rest of the book. The example describes how to use the Set_Return_Control call to set the conversation characteristic of return_control to a value of CM_IMMEDIATE. o "Set_Return_Control (CMSRC)" contains the semantics of the variables used for the call. It explains that the real name of the program call for Set_Return_Control is CMSRC and that CMSRC has a parameter list of conversation_ID, return_control, and return_code. o "Call Syntax" shows the syntax for the programming language being used. o Appendix A, "Variables and Characteristics" provides a complete description of all variables used in the book and shows that the return_control variable, which goes into the call as a parameter, is a 32-bit integer. This information is provided in Table 21. o Table 19 in Appendix A, "Variables and Characteristics" shows that CM_IMMEDIATE, which is placed into the return_control parameter on the call to CMSRC, is defined as having an integer value of 1. o Finally, the return_code value CM_OK, which is returned to the program on the CMSRC call, is defined in Appendix B, "Return Codes and Secondary Information." CM_OK means that the call completed successfully. ----------------------- Locations of Key Topics The following table provides a summary list of program calls in pseudonym sequence. Against each pseudonym is shown the actual call name, a brief description, and the call's location in this chapter. Key-topic discussions and where they occur are: o "Naming Conventions--Calls, Characteristics, Variables, and Values" describes the naming conventions used throughout the book. o "Data Buffering and Transmission" discusses program control over data transmission. o "Usage Notes" of "Request_To_Send (CMRTS)" on topic 1 discusses how a conversation enters RECEIVE state. o "Usage Notes" of "Send_Data (CMSEND)" on topic 1 describes the use of logical records and LL fields on basic conversations. -------------------------------------------- Summary List of Calls and Their Descriptions +----------------------------------------------------------------------------------------+ | Table 17. List of CPI-C Calls and Their Descriptions | +---------------------------------------+---------+----------------------------------+---+ | PSEUDONYM | CALL | DESCRIPTION | TO|IC +---------------------------------------+---------+----------------------------------+---+ | Accept_Conversation | CMACCP | Used by a program to accept an | 1 | | | | incoming conversation. | | +---------------------------------------+---------+----------------------------------+---+ | Accept_Incoming | CMACCI | Used by a program to accept an | 1 | | | | incoming conversation previously | | | | | initialized with the | | | | | Initialize_For_Incoming call. | | +---------------------------------------+---------+----------------------------------+---+ | Allocate | CMALLC | Used by a program to establish a | 1 | | | | conversation. | | +---------------------------------------+---------+----------------------------------+---+ | Cancel_Conversation | CMCANC | Used by a program to end a | 1 | | | | conversation immediately. | | +---------------------------------------+---------+----------------------------------+---+ | Confirm | CMCFM | Used by a program to send a | 1 | | | | confirmation request to its | | | | | partner. | | +---------------------------------------+---------+----------------------------------+---+ | Confirmed | CMCFMD | Used by a program to send a | 1 | | | | confirmation reply to its | | | | | partner. | | +---------------------------------------+---------+----------------------------------+---+ | Convert_Incoming | CMCNVI | Used by a program to change the | 1 | | | | encoding of a character string | | | | | from EBCDIC to the local | | | | | encoding used by the program. | | +---------------------------------------+---------+----------------------------------+---+ | Convert_Outgoing | CMCNVO | Used by a program to change the | 1 | | | | encoding of a character string | | | | | from the local encoding used by | | | | | the program to EBCDIC. | | +---------------------------------------+---------+----------------------------------+---+ | Deallocate | CMDEAL | Used by a program to end a | 1 | | | | conversation. | | +---------------------------------------+---------+----------------------------------+---+ | Deferred_Deallocate | CMDFDE | Used by a program to end a | 1 | | | | conversation following | | | | | successful completion of the | | | | | current transaction. | | +---------------------------------------+---------+----------------------------------+---+ | Extract_AE_Qualifier | CMEAEQ | Used by a program to view the | 1 | | | | current ae_qualifier | | | | | conversation characteristic. | | +---------------------------------------+---------+----------------------------------+---+ | Extract_AP_Title | CMEAPT | Used by a program to view the | 1 | | | | current ap_title conversation | | | | | characteristic. | | +---------------------------------------+---------+----------------------------------+---+ | Extract_Application_Context_Name | CMEACN | Used by a program to view the | 1 | | | | current application_context_name | | | | | conversation characteristic. | | +---------------------------------------+---------+----------------------------------+---+ | Extract_Conversation_Context | CMECTX | Used by a program to extract the | 1 | | | | context_ID for a conversation. | | +---------------------------------------+---------+----------------------------------+---+ | Extract_Conversation_State | CMECS | Used by a program to view the | 1 | | | | current state of a conversation. | | +---------------------------------------+---------+----------------------------------+---+ | Extract_Conversation_Type | CMECT | Used by a program to view the | 1 | | | | current conversation_type | | | | | conversation characteristic. | | +---------------------------------------+---------+----------------------------------+---+ | Extract_Initialization_Data | CMEID | Used by a program to extract the | 1 | | | | current initialization_data | | | | | conversation characteristic. | | +---------------------------------------+---------+----------------------------------+---+ | Extract_Maximum_Buffer_Size | CMEMBS | Used by a program to extract the | 1 | | | | maximum buffer size supported by | | | | | the system. | | +---------------------------------------+---------+----------------------------------+---+ | Extract_Mode_Name | CMEMN | Used by a program to view the | 1 | | | | current mode_name conversation | | | | | characteristic. | | +---------------------------------------+---------+----------------------------------+---+ | Extract_Partner_ID | CMEPID | Used by a program to view the | 1 | | | | current partner_ID conversation | | | | | characteristic. | | +---------------------------------------+---------+----------------------------------+---+ | Extract_Partner_LU_Name | CMEPLN | Used by a program to view the | 1 | | | | current partner_LU_name | | | | | conversation characteristic. | | +---------------------------------------+---------+----------------------------------+---+ | Extract_Secondary_Information | CMESI | Used by a program to extract | 1 | | | | secondary information associated | | | | | with the return code for a given | | | | | call. | | +---------------------------------------+---------+----------------------------------+---+ | Extract_Security_User_ID | CMESUI | Used by a program to view the | 1 | | | | current security_user_ID | | | | | conversation characteristic. | | +---------------------------------------+---------+----------------------------------+---+ | Extract_Send_Receive_Mode | CMESRM | Used by a program to view the | 1 | | | | current send_receive_mode | | | | | conversation characteristic. | | +---------------------------------------+---------+----------------------------------+---+ | Extract_Sync_Level | CMESL | Used by a program to view the | 1 | | | | current sync_level conversation | | | | | characteristic. | | +---------------------------------------+---------+----------------------------------+---+ | Extract_TP_Name | CMETPN | Used by a program to determine | 1 | | | | the TP_name characteristic's | | | | | value for a given conversation. | | +---------------------------------------+---------+----------------------------------+---+ | Extract_Transaction_Control | CMETC | Used by a program to extract the | 1 | | | | transaction_control | | | | | characteristic's value for a | | | | | given conversation. | | +---------------------------------------+---------+----------------------------------+---+ | Flush | CMFLUS | Used by a program to flush the | 1 | | | | local CRM's send buffer. | | +---------------------------------------+---------+----------------------------------+---+ | Include_Partner_In_Transaction | CMINCL | Used by a program to include a | 1 | | | | partner program in a | | | | | transaction. | | +---------------------------------------+---------+----------------------------------+---+ | Initialize_Conversation | CMINIT | Used by a program to initialize | 1 | | | | the conversation characteristics | | | | | for an outgoing conversation. | | +---------------------------------------+---------+----------------------------------+---+ | Initialize_For_Incoming | CMINIC | Used by a program to initialize | 1 | | | | the conversation characteristics | | | | | for an incoming conversation. | | +---------------------------------------+---------+----------------------------------+---+ | Prepare | CMPREP | Used by a program to prepare a | 1 | | | | subordinate for a commit | | | | | operation. | | +---------------------------------------+---------+----------------------------------+---+ | Prepare_To_Receive | CMPTR | Used by a program to change a | 1 | | | | conversation from SEND to | | | | | RECEIVE state in preparation to | | | | | receive data. | | +---------------------------------------+---------+----------------------------------+---+ | Receive | CMRCV | Used by a program to receive | 1 | | | | data. | | +---------------------------------------+---------+----------------------------------+---+ | Receive_Expedited_Data | CMRCVX | Used by a program to receive | 1 | | | | expedited data from its partner. | | +---------------------------------------+---------+----------------------------------+---+ | Release_Local_TP_Name | CMRLTP | Used by a program to release a | 1 | | | | name. | | +---------------------------------------+---------+----------------------------------+---+ | Request_To_Send | CMRTS | Used by a program to notify its | 1 | | | | partner that it would like to | | | | | send data. | | +---------------------------------------+---------+----------------------------------+---+ | Send_Data | CMSEND | Used by a program to send data. | 1 | +---------------------------------------+---------+----------------------------------+---+ | Send_Error | CMSERR | Used by a program to notify its | 1 | | | | partner of an error that | | | | | occurred during the | | | | | conversation. | | +---------------------------------------+---------+----------------------------------+---+ | Send_Expedited_Data | CMSNDX | Used by a program to send | 1 | | | | expedited data to its partner. | | +---------------------------------------+---------+----------------------------------+---+ | Set_AE_Qualifier | CMSAEQ | Used by a program to set the | 1 | | | | ae_qualifier conversation | | | | | characteristic. | | +---------------------------------------+---------+----------------------------------+---+ | Set_Allocate_Confirm | CMSAC | Used by a program to set the | 1 | | | | allocate_confirm conversation | | | | | characteristic. | | +---------------------------------------+---------+----------------------------------+---+ | Set_AP_Title | CMSAPT | Used by a program to set the | 1 | | | | ap_title conversation | | | | | characteristic. | | +---------------------------------------+---------+----------------------------------+---+ | Set_Application_Context_Name | CMSACN | Used by a program to set the | 1 | | | | application_context_name | | | | | conversation characteristic. | | +---------------------------------------+---------+----------------------------------+---+ | Set_Begin_Transaction | CMSBT | Used by a program to set the | 1 | | | | begin_transaction conversation | | | | | characteristic. | | +---------------------------------------+---------+----------------------------------+---+ | Set_Confirmation_Urgency | CMSCU | Used by a program to set the | 1 | | | | confirmation_urgency | | | | | conversation characteristic. | | +---------------------------------------+---------+----------------------------------+---+ | Set_Conversation_Security_Password | CMSCSP | Used by a program to set the | 1 | | | | security_password conversation | | | | | characteristic. | | +---------------------------------------+---------+----------------------------------+---+ | Set_Conversation_Security_Type | CMSCST | Used by a program to set the | 1 | | | | conversation_security_type | | | | | conversation characteristic. | | +---------------------------------------+---------+----------------------------------+---+ | Set_Conversation_Security_User_ID | CMSCSU | Used by a program to set the | 1 | | | | security_user_ID conversation | | | | | characteristic. | | +---------------------------------------+---------+----------------------------------+---+ | Set _Conversation_Type | CMSCT | Used by a program to set the | 1 | | | | conversation_type conversation | | | | | characteristic. | | +---------------------------------------+---------+----------------------------------+---+ | Set_Deallocate_Type | CMSDT | Used by a program to set the | 1 | | | | deallocate_type conversation | | | | | characteristic. | | +---------------------------------------+---------+----------------------------------+---+ | Set_Error_Direction | CMSED | Used by a program to set the | 1 | | | | error_direction conversation | | | | | characteristic. | | +---------------------------------------+---------+----------------------------------+---+ | Set_Fill | CMSF | Used by a program to set the | 1 | | | | fill conversation | | | | | characteristic. | | +---------------------------------------+---------+----------------------------------+---+ | Set_Initialization_Data | CMSID | Used by a program to set the | 1 | | | | initialization_data conversation | | | | | characteristic. | | +---------------------------------------+---------+----------------------------------+---+ | Set_Log_Data | CMSLD | Used by a program to set the | 1 | | | | log_data conversation | | | | | characteristic. | | +---------------------------------------+---------+----------------------------------+---+ | Set_Mode_Name | CMSMN | Used by a program to set the | 1 | | | | mode_name conversation | | | | | characteristic. | | +---------------------------------------+---------+----------------------------------+---+ | Set_Partner_ID | CMSPID | Used by a program to set the | 1 | | | | partner_ID conversation | | | | | characteristic. | | +---------------------------------------+---------+----------------------------------+---+ | Set_Partner_LU_Name | CMSPLN | Used by a program to set the | 1 | | | | partner_LU_name conversation | | | | | characteristic. | | +---------------------------------------+---------+----------------------------------+---+ | Set_Prepare_Data_Permitted | CMSPDP | Used by a program to set the | 1 | | | | prepare_data_permitted | | | | | conversation characteristic. | | +---------------------------------------+---------+----------------------------------+---+ | Set_Prepare_To_Receive_Type | CMSPTR | Used by a program to set the | 1 | | | | prepare_to_receive_type | | | | | conversation characteristic. | | +---------------------------------------+---------+----------------------------------+---+ | Set_Processing_Mode | CMSPM | Used by a program to set the | 1 | | | | processing_mode conversation | | | | | characteristic. | | +---------------------------------------+---------+----------------------------------+---+ | Set_Queue_Callback_Function | CMSQCF | Used by a program to set a | 1 | | | | callback function, callback | | | | | information, and a user field | | | | | for a given conversation queue | | | | | and to set the queue's | | | | | processing mode to | | | | | CM_NON_BLOCKING. | | +---------------------------------------+---------+----------------------------------+---+ | Set_Queue_Processing_Mode | CMSQPM | Used by a program to set the | 1 | | | | processing mode for a given | | | | | conversation queue and to | | | | | associate an | | | | | outstanding-operation identifier | | | | | (OOID) and a user field with the | | | | | queue. | | +---------------------------------------+---------+----------------------------------+---+ | Set_Receive_Type | CMSRT | Used by a program to set the | 1 | | | | receive_type conversation | | | | | characteristic. | | +---------------------------------------+---------+----------------------------------+---+ | Set_Return_Control | CMSRC | Used by a program to set the | 1 | | | | return_control conversation | | | | | characteristic. | | +---------------------------------------+---------+----------------------------------+---+ | Set_Send_Receive_Mode | CMSSRM | Used by a program to set the | 1 | | | | send_receive_mode conversation | | | | | characteristic. | | +---------------------------------------+---------+----------------------------------+---+ | Set_Send_Type | CMSST | Used by a program to set the | 1 | | | | send_type conversation | | | | | characteristic. | | +---------------------------------------+---------+----------------------------------+---+ | Set_Sync_Level | CMSSL | Used by a program to set the | 1 | | | | sync_level conversation | | | | | characteristic. | | +---------------------------------------+---------+----------------------------------+---+ | Set_TP_Name | CMSTPN | Used by a program to set the | 1 | | | | TP_Name conversation | | | | | characteristic. | | +---------------------------------------+---------+----------------------------------+---+ | Set_Transaction_Control | CMSTC | Used by a program to set the | 1 | | | | transaction_control conversation | | | | | characteristic. | | +---------------------------------------+---------+----------------------------------+---+ | Specify_Local_TP_Name | CMSLTP | Used by a program to associate a | 1 | | | | name with itself. | | +---------------------------------------+---------+----------------------------------+---+ | Test_Request_To_Send_Received | CMTRTS | Used by a program to determine | 1 | | | | whether or not the remote | | | | | program is requesting to send | | | | | data. | | +---------------------------------------+---------+----------------------------------+---+ | Wait_For_Completion | CMWCMP | Used by a program to wait for | 1 | | | | completion of one or more | | | | | outstanding operations | | | | | represented in a specified | | | | | outstanding-operation-ID (OOID) | | | | | list. | | +---------------------------------------+---------+----------------------------------+---+ | Wait_For_Conversation | CMWAIT | Used by a program to wait for | 1 | | | | the completion of any | | | | | conversation-level outstanding | | | | | operation. | | +---------------------------------------+---------+----------------------------------+---+ ---------------------------- Accept_Conversation (CMACCP) The Accept_Conversation (CMACCP) call accepts an incoming conversation. Like Initialize_Conversation, this call initializes values for various conversation characteristics. The difference between the two calls is that the program that will later allocate the conversation issues the Initialize_Conversation call, and the partner program that will accept the conversation after it is allocated issues the Accept_Conversation call. Format +--------------------------------------------------------------------+ | CALL CMACCP(conversation_ID, | | return_code) | +--------------------------------------------------------------------+ Parameters conversation_ID (output) Specifies the conversation identifier assigned to the conversation. CPI Communications supplies and maintains the conversation_ID. When the return_code is set equal to CM_OK, the value returned in this parameter is used by the program on all subsequent calls issued for this conversation. return_code (output) Specifies the result of the call execution. The return_code variable can have one of the following values: o CM_OK o CM_PROGRAM_STATE_CHECK This value indicates one of the following: - No incoming conversation exists. - No name is associated with the program. A program associates a name with itself by issuing the Specify_Local_TP_Name call. o CM_PRODUCT_SPECIFIC_ERROR State Changes For half-duplex conversations, when return_code is set equal to CM_OK, the conversation enters RECEIVE state. For full-duplex conversations, when return_code is set equal to CM_OK, the conversation enters SEND-RECEIVE state. Usage Notes 1. For each conversation, CPI Communications assigns a unique identifier (the conversation_ID) that the program uses in all future calls intended for that conversation. Therefore, the program must issue the Accept_Conversation call before any other calls can refer to the conversation. 2. There may be a system-defined limit on the number of conversations that a program can accept or allocate, but CPI Communications imposes no limit. 3. For a list of the conversation characteristics that are initialized when the Accept_Conversation call completes successfully, see Chapter 2 of the SAA CPI Communications Reference. 4. CPI Communications makes incoming conversations available to programs based upon names that are associated with the program. Specifically, those names associated with the program at the time the Accept_Conversation call is issued are used to satisfy that Accept_Conversation call. These names come either from locally defined information or from execution of the Specify_Local_TP_Name call. An implementation may place restrictions on the actions that a program may take before issuing Accept_Conversation in order to properly identify programs with associated names. 5. An implementation may choose to specify a minimum time before returning CM_PROGRAM_STATE_CHECK when no incoming conversation has arrived for the program. 6. Accept_Conversation always functions as if the processing_mode were set to CM_BLOCKING. A program that must be able to accept incoming conversations in a non-blocking mode should use the Initialize_For_Incoming and Accept_Incoming calls. The processing mode for the conversation can be set to CM_NON_BLOCKING prior to issuing Accept_Incoming. 7. A new context is created as a result of the successful completion of the Accept_Conversation call, and the conversation is assigned to the new context. The program's current context is set to the new context by node services. ------------------------ Accept_Incoming (CMACCI) A program uses the Accept_Incoming (CMACCI) call to accept an incoming conversation that has previously been initialized with the Initialize_For_Incoming call and to complete the initialization of the conversation characteristics. Before issuing the Accept_Incoming call, a program has the option of issuing one of the following calls: CALL CMSPM - Set_Processing_Mode CALL CMSQPM - Set_Queue_Processing_Mode CALL CMSQCF - Set_Queue_Callback_Function Format +--------------------------------------------------------------------+ | CALL CMACCI(conversation_ID, | | return_code) | +--------------------------------------------------------------------+ Parameters conversation_ID (input) Specifies the conversation identifier of a conversation that has been initialized for an incoming conversation. return_code (output) Specifies the result of the call execution. The return_code variable can have one of the following values: o CM_OK o CM_CALL_NOT_SUPPORTED o CM_OPERATION_INCOMPLETE o CM_PROGRAM_PARAMETER_CHECK This value indicates that the conversation_ID specifies an unassigned conversation identifier. o CM_PROGRAM_STATE_CHECK This value indicates one of the following: - The conversation is not in INITIALIZE-INCOMING state. - No name is associated with the program. A program associates a name with itself by issuing the Specify_Local_TP_Name call. o CM_OPERATION_NOT_ACCEPTED o CM_PRODUCT_SPECIFIC_ERROR State Changes For half-duplex conversations, when return_code is set to CM_OK, the conversation enters RECEIVE state. For full-duplex conversations, when return_code is set to CM_OK, the conversation enters SEND-RECEIVE state. Usage Notes 1. The Accept_Incoming call can be used only when an Initialize_For_Incoming call has already completed. 2. When Accept_Incoming successfully completes, CPI Communications initializes those conversation characteristics that use values from the conversation startup request. See Table 3 for a list of the conversation characteristics and how they are set by Initialize_For_Incoming and Accept_Incoming. 3. If Accept_Incoming is issued as a blocking call and no incoming conversation is available for the program, the call blocks until a conversation startup request arrives. The program can ensure that it is not placed in a wait state by taking one of the following actions before issuing the Accept_Incoming call: o For conversation-level non-blocking -- set the processing_mode characteristic to CM_NON_BLOCKING by using the Set_Processing_Mode call o For queue-level non-blocking -- set the processing mode for the Initialization queue to CM_NON_BLOCKING by using the Set_Queue_Callback_Function call or the Set_Queue_Processing_Mode call. 4. If the program has successfully issued a Set_Processing_Mode call, the subsequent Accept_Incoming call will complete only when the conversation startup request is for a half-duplex conversation. 5. There may be a system-defined limit on the number of conversations that a program can accept or allocate, but CPI Communications imposes no limit. 6. CPI Communications makes incoming conversations available to programs based upon names that are associated with the program. Specifically, those names associated with the program at the time the Accept_Incoming call is issued are used to satisfy that Accept_Incoming call. These names come either from locally defined information or from execution of the Specify_Local_TP_Name call. An implementation may place restrictions on the actions that a program may take before issuing Accept_Incoming in order to properly identify programs with associated names. 7. A new context is created as a result of the successful completion of the Accept_Incoming call, and the conversation is assigned to the new context. If Accept_Incoming completes successfully with return_code set to CM_OK, the program's current context is set to the new context by node services. If Accept_Incoming is issued with processing_mode set to CM_NON_BLOCKING and gets the CM_OPERATION_INCOMPLETE return code, the program's current context is not changed if the Accept_Incoming call operation subsequently completes successfully as a result of the Wait_For_Conversation call. ----------------- Allocate (CMALLC) A program uses the Allocate (CMALLC) call to establish a basic or mapped conversation (depending on the conversation_type characteristic) with its partner program. The partner program is specified in the TP_name characteristic. Before issuing the Allocate call, a program has the option of issuing one or more of the following calls: CALL CMSAEQ - Set_AE_Qualifier CALL CMSAC - Set_Allocate_Confirm CALL CMSAPT - Set_AP_Title CALL CMSACN - Set_Application_Context_Name CALL CMSBT - Set_Begin_Transaction CALL CMSCSP - Set_Conversation_Security_Password CALL CMSCST - Set_Conversation_Security_Type CALL CMSCSU - Set_Conversation_Security_User_ID CALL CMSCT - Set_Conversation_Type CALL CMSID - Set_Initialization_Data CALL CMSMN - Set_Mode_Name CALL CMSPLN - Set_Partner_LU_Name CALL CMSPM - Set_Processing_Mode CALL CMSQCF - Set_Queue_Callback_Function CALL CMSQPM - Set_Queue_Processing_Mode CALL CMSRC - Set_Return_Control CALL CMSSRM - Set_Send_Receive_Mode CALL CMSSL - Set_Sync_Level CALL CMSTPN - Set_TP_Name CALL CMSTC - Set_Transaction_Control Format +--------------------------------------------------------------------+ | CALL CMALLC(conversation_ID, | | return_code) | +--------------------------------------------------------------------+ Parameters conversation_ID (input) Specifies the conversation identifier of an initialized conversation. return_code (output) Specifies the result of the call execution. The return_code variable can have the following values: o CM_OK o CM_OPERATION_INCOMPLETE o CM_RETRY_LIMIT_EXCEEDED This value indicates that the system-specified retry limit was exceeded. o CM_SEND_RCV_MODE_NOT_SUPPORTED o CM_SYNC_LVL_NOT_SUPPORTED_SYS o CM_PARAMETER_ERROR This value indicates one of the following: - The mode_name characteristic (set from side information or by Set_Mode_Name) specifies a mode name that is not recognized by the LU as being valid. - The mode_name characteristic (set from side information or by Set_Mode_Name) specifies a mode name that the local program does not have the authority to specify. For example, SNASVCMG requires special authority with LU 6.2. - The TP_name characteristic (set from side information or by Set_TP_Name) specifies a transaction program name that the local program does not have the appropriate authority to allocate a conversation to. For example, SNA service programs require special authority with LU 6.2. (For more information, see "SNA Service Transaction Programs" on page 2.) - The TP_name characteristic (set from side information or by Set_TP_Name) specifies an SNA service transaction program and conversation_type is set to CM_MAPPED_CONVERSATION. - The partner_LU_name characteristic (set from side information or by Set_Partner_LU_Name) specifies a partner LU name that is not recognized as being valid. - The AP_title characteristic (set from side information or using the Set_AP_Title call) or the AE_qualifier characteristic (set from side information or using the Set_AE_Qualifier call) specifies an AP title or an AE qualifier that is not recognized as being valid. - The conversation_security_type characteristic is CM_SECURITY_PROGRAM or CM_SECURITY_PROGRAM_STRONG, and the security_password characteristic or the security_user_ID characteristic (set from side information or by SET calls), or both, are null. - The conversation_security_type is set to CM_SECURITY_DISTRIBUTED or CM_SECURITY_MUTUAL and the partner principal name (set from the program binding) is null or is not recognized by the CRM as being valid. - A partner_ID characteristic was provided that caused a search of the distributed directory, but no program binding was retrieved. - The program binding for the conversation, either specified directly on the Set_Partner_ID call or obtained from the distributed directory, was invalid. o CM_PROGRAM_STATE_CHECK This value indicates one of the following: - The conversation is not in INITIALIZE state. - The sync_level is set to CM_SYNC_POINT or CM_SYNC_POINT_NO_CONFIRM, transaction_control is set to CM_CHAINED_TRANSACTIONS, and the conversation's context is not in transaction. - For a conversation with sync_level set to CM_SYNC_POINT or CM_SYNC_POINT_NO_CONFIRM, the conversation's context is in the BACKOUT-REQUIRED condition. New protected conversations cannot be allocated for a context when it is in this condition. o CM_PROGRAM_PARAMETER_CHECK This value indicates that the conversation_ID specifies an unassigned conversation identifier. o CM_OPERATION_NOT_ACCEPTED o CM_PRODUCT_SPECIFIC_ERROR o CM_SECURITY_NOT_SUPPORTED This value indicates that the requested conversation security type could not be provided. This is either because the remote system does not accept the requested type of security from the local system or because the requested security does not transport the type of required user name identified in the program binding. If conversation_security_type is set to CM_SECURITY_MUTUAL, return_code can have the following values: o CM_SECURITY_NOT_VALID This value indicates that the remote system rejected the conversation startup request due to a security-related error. o CM_SECURITY_MUTUAL_FAILED This value indicates that the remote system could not be successfully authenticated. o CM_CONVERSATION_TYPE_MISMATCH o CM_PIP_NOT_SPECIFIED_CORRECTLY o CM_SYNC_LVL_NOT_SUPPORTED_PGM o CM_TPN_NOT_RECOGNIZED o CM_TP_NOT_AVAILABLE_NO_RETRY o CM_TP_NOT_AVAILABLE_RETRY o CM_RESOURCE_FAILURE_NO_RETRY o CM_RESOURCE_FAILURE_RETRY In addition, when return_control is set to CM_WHEN_SESSION_ALLOCATED, return_code can have the following values: o CM_ALLOCATE_FAILURE_NO_RETRY o CM_ALLOCATE_FAILURE_RETRY If return_control is set to CM_IMMEDIATE, return_code can have the following value: o CM_UNSUCCESSFUL This value indicates that the logical connection is not immediately available. State Changes For half-duplex conversations, when return_code is set to CM_OK, the conversation enters SEND state. For full-duplex conversations, when return_code is set to CM_OK, the conversation enters SEND-RECEIVE state. Usage Notes 1. An allocation error resulting from the local system's failure to obtain a logical connection for the conversation is reported on the Allocate call. An allocation error resulting from the remote system's rejection of the conversation startup request is reported on a subsequent conversation call, unless conversation_security_type is set to CM_SECURITY_MUTUAL. In this case, the allocation error is reported on the Allocate call. 2. For CPI Communications to establish the conversation, CPI Communications must first establish a logical connection between the local system and the remote system, if such a connection does not already exist. 3. Depending on the circumstances, the local system can send the conversation startup request to the remote system as soon as it allocates a logical connection for the conversation. The local system can also buffer the conversation startup request until it accumulates enough information for transmission (from one or more subsequent Send_Data calls), or until the local program issues a subsequent call other than Send_Data that explicitly causes the system to flush its send buffer. The amount of information sufficient for transmission depends on the characteristics of the logical connection allocated for the conversation and can vary from one logical connection to another. 4. The local program can ensure that the remote program is connected as soon as possible by issuing Flush (CMFLUS) immediately after Allocate (CMALLC). 5. A set of security parameters is established for the conversation, based on the values of the security characteristics. See "Conversation Security" for more information on conversation security. 6. When return_control is set to CM_IMMEDIATE, the call completes immediately, regardless of the processing mode in effect for the Allocate call. If a logical connection is not available, return_code is set to CM_UNSUCCESSFUL. 7. When a program allocates a conversation, the program's current context at the time the Allocate call is issued becomes the new conversation's context. If the program has multiple contexts (for example, as a result of accepting multiple conversations), it must ensure that the current context is set to the appropriate context before allocating the new conversation. 8. Initialization data specified by use of the Set_Initialization_Data (CMSID) call is sent to the remote program along with the conversation startup request. The remote program may extract the initialization data with the Extract_Initialization_Data (CMEID) call. 9. By using the Set_Allocate_Confirm call, the program allocating the conversation may request notification that the remote program has confirmed its acceptance of the conversation. 10. If a conversation is using a particular CRM type, the Allocate call tries to establish a conversation using only the destination information for that CRM type. 11. If a program specifies destination information for both an OSI TP CRM and an LU 6.2 CRM but only one set of information is complete, the Allocate call tries only the destination for which CPI Communications has complete information. If complete destination information exists for use of both an LU 6.2 CRM and an OSI TP CRM, the Allocate call tries to establish a logical connection using one and then the other destination. Only if both attempts fail does the Allocate call return either CM_ALLOCATE_FAILURE_* or CM_UNSUCCESSFUL. 12. CPI Communications programs can provide multiple program bindings for use on Allocate: o The program specifies a distinguished_name (either in side information or using the Set_Partner_ID call) that identifies a directory object containing multiple program bindings. o The program specifies a PFID with the Set_Partner_ID call that identifies multiple program installation objects with, possibly, multiple program bindings. o The program issues the Set_Partner_ID call with partner_ID_scope set to CM_REFERENCE. This allows CPI Communications to locate alternative installations of the same function if unable to establish a logical connection using the program binding obtained from the specified DN. o A program may use the Set_Partner_ID call with partner_ID_type set to CM_PROGRAM_BINDING and provide a partner_ID characteristic that contains multiple program bindings. In each of these cases, CPI Communications uses all available bindings to attempt to establish a logical connection, retrying until a logical connection is established or all bindings have been tried. The order of bindings used is determined by the method used. For example, a CM_REFERENCE option implies an ordering; the DN specified should be tried first. Alternatively, some implementations may be able to determine a "least cost" or "closest" partner and create an ordering based on network topology. Where no ordering for the bindings exists, random selection is enforced. Although no retry limit is provided at the CPI Communications level, a retry limit may be imposed by the local system to control the effects of retry. The form of this limit is system-specific; however, if a limit exists and is reached, the program is informed of this condition with a return code of CM_RETRY_LIMIT_EXCEEDED on the Allocate. 13. When conversation_security_type is CM_SECURITY_DISTRIBUTED or CM_SECURITY_MUTUAL, then the partner principal name must be set via a program binding before the Allocate. This can be done explicitly using the CMSPID call with partner_ID_type set to CM_PROGRAM_BINDING or implicitly using a directory. 14. Various conversation_security_type values and required_user_name_type values (from the program binding) cause the local CRM to reject an Allocate request with a return_code of CM_SECURITY_NOT_SUPPORTED. The incompatible combinations are shown in Table 11. ---------------------------- Cancel_Conversation (CMCANC) A program uses Cancel_Conversation (CMCANC) to end a conversation immediately. Cancel_Conversation can be issued at any time, regardless of whether a previous operation is still in progress on the conversation. Cancel_Conversation results in the immediate termination of any operations in progress on the specified conversation. No guarantees are given on the results of the terminated operations. For example, when a Cancel_Conversation call has been issued while a non-blocking Send_Data call is outstanding, the program cannot determine how much data was actually moved from the application buffer, nor can the program rely on the validity of any of the output parameters for the terminated Send_Data call. Format +--------------------------------------------------------------------+ | CALL CMCANC(conversation_ID, | | return_code) | +--------------------------------------------------------------------+ Parameters conversation_ID (input) Specifies the conversation identifier. return_code (output) Specifies the result of the call execution. The return_code variable can have one of the following values: o CM_OK o CM_CALL_NOT_SUPPORTED o CM_PROGRAM_PARAMETER_CHECK This value indicates that the conversation_ID specifies an unassigned conversation identifier. o CM_PRODUCT_SPECIFIC_ERROR State Changes When return_code is set to CM_OK, the conversation enters RESET state. Usage Notes 1. From the perspective of the local program, the conversation is terminated immediately. However, CPI Communications may not be able to notify the remote program until a later time. 2. The remote program will be notified of the termination of the conversation with the CM_DEALLOCATED_ABEND return code or, if the conversation has sync_level set to CM_SYNC_POINT or CM_SYNC_POINT_NO_CONFIRM and backout is required, with the CM_DEALLOCATED_ABEND_BO return code. NOTE: For half-duplex conversations, if the conversation is using an LU 6.2 CRM and the remote program has issued Send_Error with its end of the conversation in RECEIVE state, the incoming information containing notice of CM_DEALLOCATED_ABEND is purged, and a CM_DEALLOCATED_NORMAL or CM_DEALLOCATED_NORMAL_BO return code is reported instead of CM_DEALLOCATED_ABEND or CM_DEALLOCATED_ABEND_BO, respectively. See "Send_Error (CMSERR)" for a complete discussion. 3. Program-supplied log data is not sent to the remote system as a result of a Cancel_Conversation call. 4. When Cancel_Conversation is issued for a protected conversation, the conversation's context may be placed in the BACKOUT-REQUIRED condition. 5. If the Cancel_Conversation call is the first operation on the conversation following an Accept (CMACCP) or Accept_Incoming (CMACCI) call and an OSI TP CRM is being used, then any initialization data specified by the use of the Set_Initialization_Data (CMSID) call is sent to the remote program. --------------- Confirm (CMCFM) The Confirm (CMCFM) call is used by a local program to send a confirmation request to the remote program and then wait for a reply. The remote program replies with a Confirmed (CMCFMD) call. The local and remote programs use the Confirm and Confirmed calls to synchronize their processing of data. NOTES: 1. The sync_level conversation characteristic for the conversation_ID specified must be set to CM_CONFIRM or CM_SYNC_POINT to use this call. The Set_Sync_Level (CMSSL) call is used to set a conversation's synchronization level. 2. The Confirm call can be issued only on a half-duplex conversation. Format +--------------------------------------------------------------------+ | CALL CMCFM(conversation_ID, | | control_information_received, | | return_code) | +--------------------------------------------------------------------+ Parameters conversation_ID (input) Specifies the conversation identifier. control_information_received (output) Specifies the variable containing an indication of whether or not control information has been received. The control_information_received variable can have one of the following values: o CM_NO_CONTROL_INFO_RECEIVED Indicates that no control information was received. o CM_REQ_TO_SEND_RECEIVED (half-duplex conversations only) The local program received a request-to-send notification from the remote program. The remote program issued Request_To_Send, requesting the local program's end of the conversation to enter RECEIVE state, which would place the remote program's end of the conversation in SEND state. See the description of the Request_To_Send (CMRTS) call for further discussion of the local program's possible responses. o CM_ALLOCATE_CONFIRMED (OSI TP CRM only) The local program received confirmation of the remote program's acceptance of the conversation. o CM_ALLOCATE_CONFIRMED_WITH_DATA (OSI TP CRM only) The local program received confirmation of the remote program's acceptance of the conversation. The local program may now issue an Extract_Initialization_Data (CMEID) call to receive the initialization data. o CM_ALLOCATE_REJECTED_WITH_DATA (OSI TP CRM only) The remote program rejected the conversation. The local program may now issue an Extract_Initialization_Data (CMEID) call to receive the initialization data. This value will be returned with a return code of CM_OK. The program will receive a CM_DEALLOCATED_ABEND return code on a later call on the conversation. o CM_EXPEDITED_DATA_AVAILABLE (LU 6.2 CRM only) Expedited data is available to be received. o CM_RTS_RCVD_AND_EXP_DATA_AVAIL (half-duplex conversations and LU 6.2 CRM only) The local program received a request-to-send notification from the remote program and expedited data is available to be received. NOTES: 1. If return_code is set to CM_PROGRAM_PARAMETER_CHECK or CM_PROGRAM_STATE_CHECK, the value contained in control_information_received has no meaning. 2. When more than one piece of control information is available to be returned to the program, it will be returned in the following order: o CM_ALLOCATE_CONFIRMED, CM_ALLOCATE_CONFIRMED_WITH_DATA, or CM_ALLOCATE_REJECTED_WITH_DATA o CM_RTS_RCVD_AND_EXP_DATA_AVAIL o CM_REQ_TO_SEND_RECEIVED o CM_EXPEDITED_DATA_AVAILABLE o CM_NO_CONTROL_INFO_RECEIVED return_code (output) Specifies the result of the call execution. The return_code variable can have one of the following values: o CM_OK (remote program replied Confirmed) o CM_OPERATION_INCOMPLETE o CM_CONVERSATION_TYPE_MISMATCH o CM_PIP_NOT_SPECIFIED_CORRECTLY o CM_SECURITY_NOT_VALID o CM_SYNC_LVL_NOT_SUPPORTED_PGM o CM_SYNC_LVL_NOT_SUPPORTED_SYS o CM_SEND_RCV_MODE_NOT_SUPPORTED o CM_TPN_NOT_RECOGNIZED o CM_TP_NOT_AVAILABLE_NO_RETRY o CM_TP_NOT_AVAILABLE_RETRY o CM_DEALLOCATED_ABEND o CM_PROGRAM_ERROR_PURGING o CM_RESOURCE_FAILURE_NO_RETRY o CM_RESOURCE_FAILURE_RETRY o CM_DEALLOCATED_ABEND_SVC (basic conversations only) o CM_DEALLOCATED_ABEND_TIMER (basic conversations only) o CM_SVC_ERROR_PURGING (basic conversations only) o CM_PROGRAM_STATE_CHECK This value indicates one of the following: - The conversation is not in SEND, SEND-PENDING, or DEFER-RECEIVE state. - The conversation is basic and in SEND state, and the program started but did not finish sending a logical record. - For a conversation with sync_level set to CM_SYNC_POINT, the conversation's context is in the BACKOUT-REQUIRED condition. The Confirm call is not allowed for this conversation while its context is in this condition. o CM_PROGRAM_PARAMETER_CHECK This value indicates one of the following: - The sync_level conversation characteristic is set to CM_NONE or CM_SYNC_POINT_NO_CONFIRM. - The conversation_ID specifies an unassigned conversation identifier. - The send_receive_mode of the conversation is CM_FULL_DUPLEX. o CM_OPERATION_NOT_ACCEPTED o CM_PRODUCT_SPECIFIC_ERROR o The following values are returned only when sync_level is set to CM_SYNC_POINT: - CM_TAKE_BACKOUT - CM_DEALLOCATED_ABEND_BO - CM_DEALLOCATED_ABEND_SVC_BO (basic conversations only) - CM_DEALLOCATED_ABEND_TIMER_BO (basic conversations only) - CM_RESOURCE_FAIL_NO_RETRY_BO - CM_RESOURCE_FAILURE_RETRY_BO - CM_INCLUDE_PARTNER_REJECT_BO State Changes When return_code is set to CM_OK: o The conversation enters SEND state if the program issued the Confirm call with the conversation in SEND-PENDING state. o The conversation enters RECEIVE state if the program issued the Confirm call with the conversation in DEFER-RECEIVE state. o No state change occurs if the program issued the Confirm call with the conversation in SEND state. Usage Notes 1. The program that issues Confirm waits until a reply from the remote partner program is received. (This reply is made using the Confirmed call.) 2. The program can use this call for various application-level functions. For example: o The program can issue this call immediately following an Allocate call to determine if the conversation was allocated before sending any data. o The program can issue this call to determine if the remote program received the data sent. The remote program can respond by issuing a Confirmed call if it received and processed the data without error, or by issuing a Send_Error call if it encountered an error. The only other valid response from the remote program is the issuance of the Deallocate call with deallocate_type set to CM_DEALLOCATE_ABEND or the Cancel_Conversation call. 3. The send buffer of the local system is flushed as a result of this call. 4. When control_information_received indicates that expedited data is available, subsequent calls with this parameter will continue to return the notification until the expedited data has been received. ------------------ Confirmed (CMCFMD) A program uses the Confirmed (CMCFMD) call to send a confirmation reply to the remote program. The local and remote programs can use the Confirmed and Confirm calls to synchronize their processing. A program can issue the Confirmed call on a full-duplex conversation only when deallocating a conversation that is using an OSI TP CRM. Format +--------------------------------------------------------------------+ | CALL CMCFMD(conversation_ID, | | return_code) | +--------------------------------------------------------------------+ Parameters conversation_ID (input) Specifies the conversation identifier. return_code (output) Specifies the result of the call execution. The return_code variable can have one of the following values: o CM_OK o CM_OPERATION_INCOMPLETE o CM_PROGRAM_STATE_CHECK This value indicates one of the following: - For a half-duplex conversation, the conversation is not in CONFIRM, CONFIRM-SEND, or CONFIRM-DEALLOCATE state. - For a full-duplex conversation, the conversation is not in CONFIRM-DEALLOCATE state. - For a conversation with sync_level set to CM_SYNC_POINT, the conversation's context is in the BACKOUT-REQUIRED condition. The Confirmed call is not allowed for this conversation while its context is in this condition. o CM_PROGRAM_PARAMETER_CHECK This value indicates one of the following: - The conversation_ID specifies an unassigned conversation identifier. - The send_receive_mode is set to CM_FULL_DUPLEX and the conversation is using an LU 6.2 CRM. o CM_OPERATION_NOT_ACCEPTED o CM_PRODUCT_SPECIFIC_ERROR State Changes For a half-duplex conversation, when return_code is set to CM_OK: o The conversation enters RECEIVE state if the program received the status_received parameter set to CM_CONFIRM_RECEIVED on the preceding Receive call--that is, if the conversation was in CONFIRM state. o The conversation enters SEND state if the program received the status_received parameter set to CM_CONFIRM_SEND_RECEIVED on the preceding Receive call -- that is, if the conversation was in CONFIRM-SEND state. o The conversation enters RESET state if the program received the status_received parameter set to CM_CONFIRM_DEALLOC_RECEIVED on the preceding Receive call--that is, if the conversation was in CONFIRM-DEALLOCATE state. For a full-duplex conversation, when return_code is set to CM_OK, the conversation enters RESET state if the program received a status_received value of CM_CONFIRM_DEALLOC_RECEIVED on the preceding Receive call--that is, if the conversation was in CONFIRM-DEALLOCATE state. Usage Notes 1. For a half-duplex conversation, the local program can issue this call only as a reply to a confirmation request; the call cannot be issued at any other time. A confirmation request is generated (by the remote system) when the remote program makes a call to Confirm. The remote program that has issued Confirm will wait until the local program responds with Confirmed. 2. For a half-duplex conversation, the program can use this call for various application-level functions. For example, the remote program may send data followed by a confirmation request (using the Confirm call). When the local program receives the confirmation request, it can issue a Confirmed call to indicate that it received and processed the data without error. ------------------------- Convert_Incoming (CMCNVI) The Convert_Incoming (CMCNVI) call is used to change the encoding of a character string from EBCDIC to the local encoding used by the program. Format +--------------------------------------------------------------------+ | CALL CMCNVI(buffer, | | buffer_length, | | return_code) | +--------------------------------------------------------------------+ Parameters buffer (input) (output) Specifies the buffer containing the string to be converted. The contents of the string will be replaced by the results of the conversion. buffer_length (input) Specifies the number of characters in the string to be converted. return_code (output) Specifies the result of the call execution. The return_code variable can have one of the following values: o CM_OK o CM_CALL_NOT_SUPPORTED o CM_PROGRAM_PARAMETER_CHECK This value indicates that the buffer_length is invalid for the range permitted by the implementation. o CM_PRODUCT_SPECIFIC_ERROR State Changes This call causes no state changes. Usage Notes 1. When the EBCDIC hexadecimal codes, specified in Table 20, represent the encoding for the data transmitted across the network, the Convert_Incoming call can be used to convert the EBCDIC hexadecimal codes to the corresponding local representation of the data. 2. Convert_Incoming converts data on a character-by-character basis. Since the program may use character values beyond those defined in Table 20, care must be taken in the use of Convert_Incoming in that it may generate implementation-dependent results if applied to a string that contains such values. 3. A program may be written to be independent of the encoding (such as ASCII or EBCDIC) of the partner program by sending and receiving EBCDIC data records with the help of the Convert_Outgoing and Convert_Incoming calls. The sending program calls Convert_Outgoing to convert the data record to EBCDIC before sending it. The receiving program calls Convert_Incoming to convert the EBCDIC data record to the appropriate encoding for its environment. 4. The Convert_Incoming call is a null operation if the receiving program uses EBCDIC encoding. ------------------------- Convert_Outgoing (CMCNVO) The Convert_Outgoing (CMCNVO) call is used to change the encoding of a character string to EBCDIC from the local encoding used by the program. Format +--------------------------------------------------------------------+ | CALL CMCNVO(buffer, | | buffer_length, | | return_code) | +--------------------------------------------------------------------+ Parameters buffer (input) (output) Specifies the buffer containing the string to be converted. The contents of the string will be replaced by the results of the conversion. buffer_length (input) Specifies the number of characters in the string to be converted. return_code (output) Specifies the result of the call execution. The return_code variable can have one of the following values: o CM_OK o CM_CALL_NOT_SUPPORTED o CM_PROGRAM_PARAMETER_CHECK This value indicates that the buffer_length is invalid for the range permitted by the implementation. o CM_PRODUCT_SPECIFIC_ERROR State Changes This call causes no state changes. Usage Notes 1. When the EBCDIC hexadecimal codes, specified in Table 20, represent the encoding for the data transmitted across the network, the Convert_Outgoing call can be used to convert the data supplied by the program from the local encoding to the corresponding EBCDIC hexadecimal codes. 2. Convert_Outgoing converts data on a character-by-character basis. Since the program may use character values beyond those defined in Table 20, care must be taken in the use of Convert_Outgoing in that it may generate implementation-dependent results if applied to a string which contains such values. 3. A program may be written to be independent of the encoding (such as ASCII or EBCDIC) of the partner program by sending and receiving EBCDIC data records with the help of the Convert_Outgoing and Convert_Incoming calls. The sending program calls Convert_Outgoing to convert the data record to EBCDIC before sending it. The receiving program calls Convert_Incoming to convert the EBCDIC data record to the appropriate encoding for its environment. 4. The Convert_Outgoing call is a null operation if the sending program uses EBCDIC encoding. ------------------- Deallocate (CMDEAL) A program uses the Deallocate (CMDEAL) call to end a conversation. The conversation_ID is no longer assigned when the conversation is deallocated as part of this call. For a half-duplex conversation, the deallocation can either be completed as part of this call or deferred until the program issues a resource recovery call. If the Deallocate call includes the function of the Flush or Confirm call, depending on the deallocate_type characteristic, the deallocation is completed as part of this call. For a full-duplex conversation, the deallocation may be deferred until the program issues a resource recovery commit call. If the Deallocate call includes abnormal deallocation or the function of the Confirm call, depending on the deallocate_type characteristic, the deallocation is completed as part of this call. If the Deallocate call includes the function of the Flush call, depending on the deallocate_type characteristic, then the program can no longer send data to the partner. The deallocation is completed if the conversation was in SEND-ONLY state before this call. Otherwise, the conversation goes to RECEIVE-ONLY state. In this latter case, the deallocation is completed when a terminating error condition occurs, either this program or the partner program deallocates the conversation abnormally or cancels it, or the partner program deallocates the conversation using the function of the Flush call. Before issuing the Deallocate call, a program has the option of issuing one or both of the following calls to set deallocation parameters: CALL CMSDT - Set_Deallocate_Type CALL CMSLD - Set_Log_Data Format +--------------------------------------------------------------------+ | CALL CMDEAL(conversation_ID, | | return_code) | +--------------------------------------------------------------------+ Parameters conversation_ID (input) Specifies the conversation identifier of the conversation to be ended. return_code (output) Specifies the result of the call execution. The following return codes apply to half-duplex conversations. For any of the following conditions: - deallocate_type is set to CM_DEALLOCATE_SYNC_LEVEL and either sync_level is set to CM_NONE or the conversation is in INITIALIZE-INCOMING state - deallocate_type is set to CM_DEALLOCATE_FLUSH - deallocate_type is set to CM_DEALLOCATE_SYNC_LEVEL, sync_level is set to CM_SYNC_POINT_NO_CONFIRM, but the conversation is not currently included in a transaction the return_code variable can have one of the following values: o CM_OK (deallocation is completed) o CM_OPERATION_INCOMPLETE o CM_PROGRAM_STATE_CHECK This value indicates one of the following: - The conversation is not in SEND, SEND-PENDING or INITIALIZE-INCOMING state. - The conversation is basic and in SEND state; and the program started but did not finish sending a logical record. - The deallocate_type is set to CM_DEALLOCATE_FLUSH, and the conversation is currently included in a transaction. o CM_PROGRAM_PARAMETER_CHECK This value indicates that the conversation_ID specifies an unassigned conversation identifier. o CM_OPERATION_NOT_ACCEPTED o CM_PRODUCT_SPECIFIC_ERROR If the deallocate_type conversation characteristic is set to CM_DEALLOCATE_ABEND, the return_code variable can have one of the following values: o CM_OK (deallocation is completed) o CM_PROGRAM_PARAMETER_CHECK This value indicates that the conversation_ID specifies an unassigned conversation identifier. o CM_OPERATION_NOT_ACCEPTED o CM_OPERATION_INCOMPLETE o CM_PRODUCT_SPECIFIC_ERROR For any of the following conditions: - deallocate_type is set to CM_DEALLOCATE_SYNC_LEVEL and the sync_level is set to CM_CONFIRM - deallocate_type is set to CM_DEALLOCATE_CONFIRM - deallocate_type is set to CM_DEALLOCATE_SYNC_LEVEL, sync_level is set to CM_SYNC_POINT, but the conversation is not currently included in a transaction the return_code variable can have one of the following values: o CM_OK (deallocation is completed) o CM_OPERATION_INCOMPLETE o CM_CONVERSATION_TYPE_MISMATCH o CM_PIP_NOT_SPECIFIED_CORRECTLY o CM_SECURITY_NOT_VALID o CM_SYNC_LVL_NOT_SUPPORTED_PGM o CM_SYNC_LVL_NOT_SUPPORTED_SYS o CM_SEND_RCV_MODE_NOT_SUPPORTED o CM_TPN_NOT_RECOGNIZED o CM_TP_NOT_AVAILABLE_NO_RETRY o CM_TP_NOT_AVAILABLE_RETRY o CM_DEALLOCATED_ABEND o CM_PROGRAM_ERROR_PURGING o CM_RESOURCE_FAILURE_NO_RETRY o CM_RESOURCE_FAILURE_RETRY o CM_DEALLOCATED_ABEND_SVC (basic conversations only) o CM_DEALLOCATED_ABEND_TIMER (basic conversations only) o CM_SVC_ERROR_PURGING o CM_PROGRAM_STATE_CHECK This value indicates one of the following: - The conversation is not in SEND or SEND-PENDING state. - The conversation is basic and in SEND state; and the program started but did not finish sending a logical record. - The deallocate_type is set to CM_DEALLOCATE_CONFIRM, and the conversation is currently included in a transaction. o CM_PROGRAM_PARAMETER_CHECK This value indicates that the conversation_ID specifies an unassigned conversation identifier. o CM_OPERATION_NOT_ACCEPTED o CM_PRODUCT_SPECIFIC_ERROR If the deallocate_type conversation characteristic is set to CM_DEALLOCATE_SYNC_LEVEL, sync_level is set to CM_SYNC_POINT or CM_SYNC_POINT_NO_CONFIRM, and the conversation is included in a transaction, the return_code variable can have one of the following values: o CM_OK Deallocation is deferred until the program issues a resource recovery commit call. If the commit call is successful, the conversation will be deallocated normally. If the commit is not successful or if the program issues a resource recovery backout call instead of a commit, the conversation will not be deallocated. Instead, the conversation will be restored to the state it was in at the previous synchronization point. o CM_OPERATION_INCOMPLETE o CM_PROGRAM_STATE_CHECK This value indicates one of the following: - The conversation is not in SEND or SEND-PENDING state. - The conversation is basic and in SEND state, and the program started but did not finish sending a logical record. - The conversation's context is in the BACKOUT-REQUIRED condition. o CM_PROGRAM_PARAMETER_CHECK This value indicates one of the following: - The conversation_ID specifies an unassigned conversation identifier. - The conversation is using an OSI TP CRM, and the program is not the superior for the conversation. o CM_OPERATION_NOT_ACCEPTED o CM_PRODUCT_SPECIFIC_ERROR The following return codes apply to full-duplex conversations. For any of the following conditions: - deallocate_type is set to CM_DEALLOCATE_SYNC_LEVEL and either sync_level is set to CM_NONE or the conversation is in INITIALIZE-INCOMING state - deallocate_type is set to CM_DEALLOCATE_FLUSH - deallocate_type is set to CM_DEALLOCATE_SYNC_LEVEL, sync_level is set to CM_SYNC_POINT_NO_CONFIRM, but the conversation is not currently included in a transaction the return_code variable can have one of the following values: o CM_OK Deallocation is completed if this call was issued in SEND-ONLY or INITIALIZE-INCOMING state. Otherwise, the call was issued in SEND-RECEIVE state and the conversation goes to RECEIVE-ONLY state. In this latter case, the conversation will later get deallocated when a terminating error condition occurs, either this program or the partner program deallocates the conversation abnormally or cancels it, or the partner program deallocates the conversation using the function of the Flush call. o CM_PROGRAM_STATE_CHECK This value indicates one of the following: - The conversation is not in SEND-RECEIVE or SEND-ONLY or INITIALIZE-INCOMING state. - The conversation is basic and in SEND-RECEIVE or SEND-ONLY state, and the program started but did not finish sending a logical record. - The local program has received a status_received value of CM_JOIN_TRANSACTION and must issue a tx_begin call to the X/Open TX interface to join the transaction. - The deallocate_type is set to CM_DEALLOCATE_FLUSH, and the conversation is currently included in a transaction. o CM_PROGRAM_PARAMETER_CHECK This value indicates that the conversation_ID specifies an unassigned conversation identifier. o CM_ALLOCATION_ERROR o CM_DEALLOCATED_ABEND o CM_DEALLOCATED_ABEND_SVC o CM_DEALLOCATED_ABEND_TIMER o CM_RESOURCE_FAILURE_NO_RETRY o CM_RESOURCE_FAILURE_RETRY o CM_DEALLOCATED_NORMAL o CM_OPERATION_NOT_ACCEPTED o CM_OPERATION_INCOMPLETE o CM_PRODUCT_SPECIFIC_ERROR If the deallocate_type conversation characteristic is set to CM_DEALLOCATE_ABEND, the return_code variable can have one of the following values: o CM_OK (deallocation is completed) o CM_PROGRAM_PARAMETER_CHECK This value indicates that the conversation_ID specifies an unassigned conversation identifier. o CM_OPERATION_NOT_ACCEPTED o CM_OPERATION_INCOMPLETE o CM_PRODUCT_SPECIFIC_ERROR If the deallocate_type conversation characteristic is set to CM_DEALLOCATE_CONFIRM, the return_code variable can have one of the following values: o CM_OK (deallocation is completed) o CM_DEALLOCATE_CONFIRM_REJECT This value indicates that the partner program rejected the confirmation request. The conversation is not deallocated. o CM_ALLOCATION_ERROR o CM_DEALLOCATED_ABEND o CM_RESOURCE_FAILURE_NO_RETRY o CM_RESOURCE_FAILURE_RETRY o CM_DEALLOCATED_NORMAL o CM_PROGRAM_STATE_CHECK This value indicates one of the following: - The conversation is not in SEND-RECEIVE state. - The conversation is basic and in SEND-RECEIVE state, and the program started but did not finish sending a logical record. - The local program has received a status_received value of CM_JOIN_TRANSACTION and must issue a tx_begin call to the X/Open TX interface to join the transaction. - The deallocate_type is set to CM_DEALLOCATE_CONFIRM, and the conversation is currently included in a transaction. o CM_PROGRAM_PARAMETER_CHECK This value indicates that the conversation_ID specifies an unassigned conversation identifier. o CM_PRODUCT_SPECIFIC_ERROR o CM_OPERATION_INCOMPLETE o CM_OPERATION_NOT_ACCEPTED If the deallocate_type conversation characteristic is set to CM_DEALLOCATE_SYNC_LEVEL, sync_level is set to CM_SYNC_POINT_NO_CONFIRM, and the conversation is included in a transaction, the return_code variable can have one of the following values: o CM_OK Deallocation is deferred until the program issues a resource recovery commit call. If the commit call is successful, the conversation will be deallocated normally. If the commit is not successful or if the program issues a resource recovery backout call instead of a commit, the conversation will not be deallocated. Instead, the conversation will be restored to the state it was in at the previous synchronization point. o CM_OPERATION_INCOMPLETE o CM_PROGRAM_STATE_CHECK This value indicates one of the following: - The conversation is not in SEND-RECEIVE state. - The conversation is basic and in SEND-RECEIVE state, and the program started but did not finish sending a logical record. - The conversation's context is in the BACKOUT-REQUIRED condition. - The local program has received a status_received value of CM_JOIN_TRANSACTION and must issue a tx_begin call to the X/Open TX interface to join the transaction. o CM_PROGRAM_PARAMETER_CHECK This value indicates one of the following: - The conversation_ID specifies an unassigned conversation identifier. - The conversation is using an OSI TP CRM, and the program is not the superior for the conversation. o CM_ALLOCATION_ERROR o CM_TAKE_BACKOUT o CM_DEALLOCATED_ABEND_BO o CM_DEALLOCATED_ABEND_SVC_BO o CM_DEALLOCATED_ABEND_TIMER_BO o CM_RESOURCE_FAILURE_RETRY_BO o CM_RESOURCE_FAIL_NO_RETRY_BO o CM_INCLUDE_PARTNER_REJECT_BO o CM_CONV_DEALLOC_AFTER_SYNCPT o CM_OPERATION_NOT_ACCEPTED o CM_PRODUCT_SPECIFIC_ERROR State Changes For half-duplex conversations, when return_code indicates CM_OK: o The conversation enters RESET state if deallocate_type is set to CM_DEALLOCATE_SYNC_LEVEL and either sync_level is set to CM_NONE or the conversation is in INITIALIZE-INCOMING state, or if deallocate_type is set to CM_DEALLOCATE_FLUSH, CM_DEALLOCATE_CONFIRM, or CM_DEALLOCATE_ABEND. o The conversation enters RESET state if deallocate_type is set to CM_DEALLOCATE_SYNC_LEVEL, sync_level is set to CM_SYNC_POINT or CM_SYNC_POINT_NO_CONFIRM, but the conversation is not currently included in a transaction. o The conversation enters DEFER-DEALLOCATE state if deallocate_type is set to CM_DEALLOCATE_SYNC_LEVEL, sync_level is set to CM_SYNC_POINT or CM_SYNC_POINT_NO_CONFIRM, and the conversation is included in a transaction. For full-duplex conversations, when return_code indicates CM_OK: o The conversation enters RESET state if deallocate_type is set to CM_DEALLOCATE_SYNC_LEVEL and either sync_level is set to CM_NONE or the conversation is in INITIALIZE-INCOMING state, or if deallocate_type is set to CM_DEALLOCATE_CONFIRM or CM_DEALLOCATE_ABEND. o The conversation enters RESET state if deallocate_type is set to CM_DEALLOCATE_FLUSH, or if deallocate_type is set to CM_DEALLOCATE_SYNC_LEVEL and sync_level is set to CM_SYNC_POINT_NO_CONFIRM but the conversation is not currently included in a transaction, and the current state is SEND-ONLY state. o The conversation enters RECEIVE-ONLY state if deallocate_type is set to CM_DEALLOCATE_FLUSH, or if deallocate_type is set to CM_DEALLOCATE_SYNC_LEVEL and sync_level is set to CM_SYNC_POINT_NO_CONFIRM but the conversation is not currently included in a transaction, and the current state is SEND-RECEIVE state. o The conversation enters DEFER-DEALLOCATE state if deallocate_type is set to CM_DEALLOCATE_SYNC_LEVEL, sync_level is set to CM_SYNC_POINT_NO_CONFIRM, and the conversation is included in a transaction. Usage Notes 1. The execution of Deallocate includes the flushing of the local system's send buffer if any of the following conditions is true: - deallocate_type is set to CM_DEALLOCATE_FLUSH or CM_DEALLOCATE_CONFIRM - deallocate_type is set to CM_DEALLOCATE_SYNC_LEVEL, sync_level is CM_NONE or CM_CONFIRM - deallocate_type is set to CM_DEALLOCATE_SYNC_LEVEL and sync_level is set to CM_SYNC_POINT or CM_SYNC_POINT_NO_CONFIRM, but the conversation is not currently included in a transaction. If deallocate_type is CM_DEALLOCATE_SYNC_LEVEL, sync_level is CM_SYNC_POINT or CM_SYNC_POINT_NO_CONFIRM, and the conversation is included in a transaction, the local system's send buffer will not be flushed until a resource recovery commit or backout call is issued by the program or the sync point manager. 2. If a conversation has sync_level set to CM_SYNC_POINT or CM_SYNC_POINT_NO_CONFIRM, CPI Communications does not allow the conversation to be deallocated with a deallocate_type of CM_DEALLOCATE_CONFIRM or CM_DEALLOCATE_FLUSH unless transaction_control is set to CM_UNCHAINED_TRANSACTIONS and the conversation is not currently included in a transaction. 3. If deallocate_type is set to CM_DEALLOCATE_ABEND and the log_data_length characteristic is greater than zero, the system formats the supplied log data into the appropriate format. The data supplied by the program is any data the program wants to have logged. The data is logged on the local system's error log and is also sent to the remote system for logging there. 4. The remote program receives the deallocate notification by means of a return_code or status_received indication, as follows: o CM_DEALLOCATED_NORMAL return_code This return code indicates that the local program issued Deallocate with the deallocate_type set to CM_DEALLOCATE_FLUSH, or with the deallocate_type set to CM_DEALLOCATE_SYNC_LEVEL and sync_level set to CM_NONE, or with deallocate_type set to CM_DEALLOCATE_SYNC_LEVEL, sync_level set to CM_SYNC_POINT_NO_CONFIRM, and the conversation not currently included in a transaction. For a full-duplex conversation, this return code is returned on the Receive call, and if the conversation is using an OSI TP CRM, it is also returned on calls associated with the Send queue. o CM_DEALLOCATED_ABEND return_code This indicates that the local program issued Deallocate with deallocate_type set to CM_DEALLOCATE_ABEND. For a full-duplex conversation, this return code is returned on the Receive call, and if the conversation is using an OSI TP CRM, it is also returned on some calls associated with the Send queue. NOTE: For a half-duplex conversation, if the conversation is using an LU 6.2 CRM and the remote program has issued Send_Error with its end of the conversation in RECEIVE state, the incoming information containing notice of CM_DEALLOCATED_ABEND is purged and a CM_DEALLOCATED_NORMAL return_code is reported instead of CM_DEALLOCATED_ABEND. o CM_DEALLOCATED_ABEND_BO return_code This indicates that the local program issued Deallocate with the deallocate_type set to CM_DEALLOCATE_ABEND and with the conversation included in a transaction. NOTE: For a half-duplex conversation, if the conversation is using an LU 6.2 CRM and the remote program has issued Send_Error with its end of the conversation in RECEIVE state, the incoming information containing notice of CM_DEALLOCATED_ABEND_BO is purged and a CM_DEALLOCATED_NORMAL_BO return_code is reported instead of CM_DEALLOCATED_ABEND_BO. See the description of Send_Error (CMSERR) for a complete discussion. o CM_CONFIRM_DEALLOC_RECEIVED status_received indication This indicates that the local program issued Deallocate with the deallocate_type set to CM_DEALLOCATE_CONFIRM, or with deallocate_type set to CM_DEALLOCATE_SYNC_LEVEL and sync_level set to CM_CONFIRM, or with deallocate_type set to CM_DEALLOCATE_SYNC_LEVEL and sync_level set to CM_SYNC_POINT, but with the conversation not currently included in a transaction. o CM_TAKE_COMMIT_DEALLOCATE status_received indication This indicates that the local program issued a resource recovery commit call after issuing a Deallocate call with deallocate_type set to CM_DEALLOCATE_SYNC_LEVEL and sync_level set to CM_SYNC_POINT or CM_SYNC_POINT_NO_CONFIRM, and with the conversation included in a transaction. 5. The program should terminate all conversations before the end of the program. However, if the program does not terminate all conversations, node services will abnormally deallocate any dangling conversations. The way abnormal deallocation is accomplished is implementation-specific. 6. When a Deallocate call is issued with deallocate_type set to CM_DEALLOCATE_ABEND and sync_level set to CM_SYNC_POINT or CM_SYNC_POINT_NO_CONFIRM, the conversation's context may be placed in the BACKOUT-REQUIRED condition. 7. If the conversation is using an OSI TP CRM and the Deallocate call with deallocate_type of CM_DEALLOCATE_ABEND is the first operation on the specified conversation following an Accept_Conversation (CMACCP) or Accept_Incoming (CMACCI) call, then any initialization data specified by use of the Set_Initialization_Data call is sent to the remote program. 8. If the Deallocate call on a full-duplex conversation is issued with the deallocate_type set to CM_DEALLOCATE_ABEND, the conversation is deallocated. If the conversation is not currently included in a transaction, outstanding calls associated with both the local and the remote programs get return codes as follows: At the local program, all outstanding operations are terminated. No guarantee is given on the results of the terminated operation. At the remote program, o Other than Confirmed and Set calls, a new or outstanding call associated with the Send queue gets CM_DEALLOCATED_ABEND, and the conversation goes to RECEIVE-ONLY or RESET state if it was in SEND-RECEIVE or SEND-ONLY state, respectively. o Any data sent by the partner before it issued the Deallocate call can be received, after which the next Receive call will get CM_DEALLOCATED_ABEND. The conversation is now in RESET state. o Calls associated with the Expedited-Send queue until the conversation goes to RESET state get CM_CONVERSATION_ENDING. An outstanding call is terminated when the conversation goes to RESET state. No guarantee is given on the results of the terminated operation. o Calls associated with the Expedited-Receive queue until the conversation goes to RESET state get CM_CONVERSATION_ENDING after any available expedited data has been received. An outstanding call is terminated when the conversation goes to RESET state. No guarantee is given on the results of the terminated operation. If the conversation is currently included in a transaction, then calls associated with the local Receive queue and the remote Receive queue, as well as certain calls associated with the remote Send queue, get CM_DEALLOCATED_ABEND_BO and the conversation goes to RESET state. Calls associated with the expedited data queues get the same return codes as when the conversation is not included in a transaction. 9. For a full-duplex conversation in SEND-RECEIVE state, when CM_DEALLOCATED_ABEND is returned to a call associated with the Send queue, the program can terminate the conversation by issuing Receive calls until it gets the CM_DEALLOCATED_ABEND return code that takes it to RESET state, or by issuing a Deallocate call with deallocate_type set to CM_DEALLOCATED_ABEND. 10. For a full-duplex conversation, if any of the following conditions is true: - deallocate_type is set to CM_DEALLOCATE_SYNC_LEVEL and sync_level is set to CM_NONE - deallocate_type is set to CM_DEALLOCATE_FLUSH - deallocate_type is set to CM_DEALLOCATE_SYNC_LEVEL and sync_level is set to CM_SYNC_POINT_NO_CONFIRM, but the conversation is not currently included in a transaction then the program can no longer send data on the conversation when a Deallocate call issued in SEND-RECEIVE state completes, and the conversation_ID is no longer assigned when a Deallocate call issued in SEND-ONLY state completes. If deallocate_type is set to CM_DEALLOCATE_CONFIRM, or if deallocate_type is set to CM_DEALLOCATE_SYNC_LEVEL and sync_level is set to CM_SYNC_POINT but the conversation is not currently included in a transaction, then the conversation_ID is no longer assigned when the conversation is deallocated after confirmation. If deallocate_type is CM_DEALLOCATE_ABEND, then the conversation_ID is no longer assigned when the conversation is deallocated as part of this call. 11. NOTE TO IMPLEMENTERS: a Deallocate call with deallocate_type set to CM_DEALLOCATE_ABEND issued on a basic conversation implies the LU 6.2 protocol boundary return code of DEALLOCATE_ABEND_PROG. No separate parameter value is supported since a separate value would not provide any additional function. In LU 6.2, the sense data 08640000 maps to a return code of DEALLOCATE_ABEND for mapped conversations and to DEALLOCATE_ABEND_PROG for basic conversations. It does not appear useful to require the application to check for different return codes that have the same meaning depending on the conversation type. ---------------------------- Deferred_Deallocate (CMDFDE) A program uses the Deferred_Deallocate (CMDFDE) call to end a conversation upon successful completion of the current transaction. Deferred_Deallocate may be issued at any time during the transaction. Unlike the Deallocate call, it does not need to be the last call on the conversation. Deferred_Deallocate does not invalidate the conversation identifier. NOTE: The Deferred_Deallocate (CMDFDE) call has meaning only when an OSI TP CRM is being used for the conversation. Format +--------------------------------------------------------------------+ | CALL CMDFDE(conversation_ID, | | return_code) | +--------------------------------------------------------------------+ Parameters conversation_ID (input) Specifies the conversation identifier. return_code (output) Specifies the result of the call execution. The return_code variable can have one of the following values: o CM_OK o CM_CALL_NOT_SUPPORTED o CM_OPERATION_INCOMPLETE o CM_PROGRAM_PARAMETER_CHECK This value indicates one of the following: - This value indicates the conversation_ID specifies an unassigned identifier. - The conversation is not using an OSI TP CRM. - The program is not the superior for the conversation. o CM_PROGRAM_STATE_CHECK This value indicates one of the following: - The conversation is not in SEND or SEND-PENDING state (for half-duplex conversations) or SEND-RECEIVE state (for full-duplex conversations). - The conversation is not currently included in a transaction. o CM_TAKE_BACKOUT o CM_DEALLOCATED_ABEND_BO o CM_RESOURCE_FAILURE_RETRY_BO o CM_RESOURCE_FAIL_NO_RETRY_BO o CM_INCLUDE_PARTNER_REJECT_BO o CM_OPERATION_NOT_ACCEPTED o CM_PRODUCT_SPECIFIC_ERROR The following return codes apply to half-duplex conversations. o CM_SYNC_LVL_NOT_SUPPORTED_SYS o CM_SEND_RCV_MODE_NOT_SUPPORTED o CM_TPN_NOT_RECOGNIZED o CM_TP_NOT_AVAILABLE_NO_RETRY o CM_TP_NOT_AVAILABLE_RETRY o CM_PROGRAM_ERROR_PURGING The following return code applies to full-duplex conversations. o CM_ALLOCATION_ERROR State Changes This call does not cause an immediate state change. However, one of the following occurs after the transaction completes: o If the transaction completes successfully, the conversation enters RESET state and the conversation_id is no longer assigned. o If the transaction does not complete successfully, the conversation returns to the state it was in at the beginning of the transaction, and the conversation_id remains valid. If the conversation was initialized during the transaction, the conversation returns to the state it was in following conversation establishment. Usage Notes 1. Once a commit call completes successfully for this transaction, a Deferred_Deallocate call performs the same function as a Deallocate (CMDEAL) call with deallocate_type set to CM_DEALLOCATE_SYNC_LEVEL and sync_level set to either CM_SYNC_POINT or CM_SYNC_POINT_NO_CONFIRM. 2. If the transaction does not complete successfully and is backed out, longer in effect. Related Information "Deallocate (CMDEAL)" discusses conversation deallocation in more detail. ----------------------------- Extract_AE_Qualifier (CMEAEQ) The local program uses the Extract_AE_Qualifier (CMEAEQ) call to extract the AE_qualifier conversation characteristic for a given conversation. The value is returned to the application in the AE_qualifier parameter. Format +--------------------------------------------------------------------+ | CALL CMEAEQ(conversation_ID, | | AE_qualifier, | | AE_qualifier_length, | | AE_qualifier_format, | | return_code) | +--------------------------------------------------------------------+ Parameters conversation_ID (input) Specifies the conversation identifier. AE_qualifier (output) Specifies the variable containing the application-entity-qualifier for the remote program. The variable must be defined with a length of at least 1024 bytes. NOTE: Unless return_code is set to CM_OK, the value of AE_qualifier is not meaningful. AE_qualifier_length (output) Specifies the variable containing the length of the returned AE_qualifier parameter. NOTE: Unless return_code is set to CM_OK, the value of AE_qualifier_length is not meaningful. AE_qualifier_format (output) Specifies the variable containing the format of the returned AE_qualifier parameter. The AE_qualifier_format variable can have one of the following values: o CM_DN Specifies that the AE_qualifier is a distinguished name. o CM_INT_DIGITS Specifies that the AE_qualifier is an integer represented as a sequence of decimal digits. NOTE: Unless return_code is set to CM_OK, the value of AE_qualifier_format is not meaningful. return_code (output) Specifies the result of the call execution. The return_code variable can have one of the following values: o CM_OK o CM_CALL_NOT_SUPPORTED o CM_PROGRAM_PARAMETER_CHECK This value indicates that the conversation_ID specifies an unassigned identifier. o CM_PROGRAM_STATE_CHECK This value indicates that the conversation_ID specifies a conversation in INITIALIZE-INCOMING state. o CM_OPERATION_NOT_ACCEPTED This value indicates that the program has chosen conversation-level non-blocking for the conversation and a previous call operation is still in progress. o CM_PRODUCT_SPECIFIC_ERROR State Changes This call does not cause any state changes. Usage Notes 1. This call does not change the AE_qualifier, AE_qualifier_length, or AE_qualifier_format for the specified conversation. 2. The AE_qualifier may be either a distinguished name or an integer represented as a sequence of decimal digits. Distinguished names may have any format and syntax that can be recognized by the local system. 3. The call is not associated with any conversation queue. When a conversation uses queue-level non-blocking, the call does not return CM_OPERATION_NOT_ACCEPTED. Related Information "Set_AE_Qualifier (CMSAEQ)" and "Side Information" provide more information on the AE_qualifier conversation characteristic. ------------------------- Extract_AP_Title (CMEAPT) A program uses the Extract_AP_Title (CMEAPT) call to extract the AP_title characteristic for a given conversation. The value is returned to the application in the AP_title parameter. Format +--------------------------------------------------------------------+ | CALL CMEAPT(conversation_ID, | | AP_title, | | AP_title_length, | | AP_title_format, | | return_code) | +--------------------------------------------------------------------+ Parameters conversation_ID (input) Specifies the conversation identifier. AP_title (output) Specifies the variable containing the title of the application-process where the remote program is located. The variable must be defined with a length of at least 1024 bytes. NOTE: Unless return_code is set to CM_OK, the value of AP_title is not meaningful. AP_title_length (output) Specifies the variable containing the length of the returned AP_title parameter. NOTE: Unless return_code is set to CM_OK, the value of AP_title_length is not meaningful. AP_title_format (output) Specifies the variable containing the format of the returned AP_title parameter. The AP_title_format variable can have one of the following values: o CM_DN Specifies that the AP_title is a distinguished name. o CM_OID Specifies that the AP_title is an object identifier. NOTE: Unless return_code is set to CM_OK, the value of AP_title_format is not meaningful. return_code (output) Specifies the result of the call execution. The return_code variable can have one of the following values: o CM_OK o CM_CALL_NOT_SUPPORTED o CM_PROGRAM_PARAMETER_CHECK This value indicates that the conversation_ID specifies an unassigned identifier. o CM_PROGRAM_STATE_CHECK This value indicates that the conversation_ID specifies a conversation in INITIALIZE-INCOMING state. o CM_OPERATION_NOT_ACCEPTED This value indicates that the program has chosen conversation-level non-blocking for the conversation and a previous call operation is still in progress. o CM_PRODUCT_SPECIFIC_ERROR State Changes This call does not cause any state changes. Usage Notes 1. This call does not change the AP_title, AP_title_length, or AP_title_format for the specified conversation. 2. The AP_title may be either a distinguished name or an object identifier. Distinguished names may have any format and syntax that can be recognized by the local system. Object identifiers are represented as a series of digits by periods (for example, n.nn.n.nnn). 3. The call is not associated with any conversation queue. When a conversation uses queue-level non-blocking, the call does not return CM_OPERATION_NOT_ACCEPTED on the conversation. Related Information "Set_AP_Title (CMSAPT)" and "Side Information" provide more information on the AP_title conversation characteristic. ----------------------------------------- Extract_Application_Context_Name (CMEACN) Extract_Application_Context_Name (CMEACN) is used by a program to extract the application_context_name characteristic for a given conversation. The value is returned to the application in the application_context_name parameter. Format +--------------------------------------------------------------------+ | CALL CMEACN(conversation_ID, | | application_context_name, | | application_context_name_length, | | return_code) | +--------------------------------------------------------------------+ Parameters conversation_ID (input) Specifies the conversation identifier. application_context_name (output) Specifies the application context name that is to be used on the conversation. The variable must be defined with a length of at least 256 bytes. NOTE: Unless return_code is set to CM_OK, the value of application_context_name is not meaningful. application_context_name_length (output) Specifies the length of the application context name that is to be used on the conversation. NOTE: Unless return_code is set to CM_OK, the value of application_context_name_length is not meaningful. return_code (output) Specifies the result of the call execution. The return_code variable can have one of the following values: o CM_OK o CM_CALL_NOT_SUPPORTED o CM_PROGRAM_PARAMETER_CHECK This value indicates that the conversation_ID specifies an unassigned identifier. o CM_PROGRAM_STATE_CHECK This value indicates that the conversation_ID specifies a conversation in INITIALIZE-INCOMING state. o CM_OPERATION_NOT_ACCEPTED This value indicates that the program has chosen conversation-level non-blocking for the conversation and a previous call operation is still in progress. o CM_PRODUCT_SPECIFIC_ERROR State Changes This call does not cause any state changes. Usage Notes 1. This call does not change the application_context_name or the application_context_name_length conversation characteristic for the specified conversation. 2. The application context name is an object identifier and is represented as a series of digits separated by periods. For example, the application context defined by the Open Systems Environment Implementers' Workshop (OIW) for UDT with Commit Profiles is represented as "1.3.14.15.5.1.0" and the application context for Application Supported Transactions using UDT is represented as "1.3.14.15.5.2.0". 3. The call is not associated with any conversation queue. When a conversation uses queue-level non-blocking, the call does not return CM_OPERATION_NOT_ACCEPTED on the conversation. Related Information "Set_Application_Context_Name (CMSACN)" and "Side Information" provide more information on the application_context_name conversation characteristic. ------------------------------------- Extract_Conversation_Context (CMECTX) Extract_Conversation_Context (CMECTX) is used by a program to extract the context identifier for a conversation. Format +--------------------------------------------------------------------+ | CALL CMECTX(conversation_ID, | | context_ID, | | context_ID_length, | | return_code) | +--------------------------------------------------------------------+ Parameters conversation_ID (input) Specifies the conversation identifier. context_ID (output) Specifies the variable containing the context identifier for this conversation. The variable must be defined with a length of at least 32 bytes. NOTE: Unless return_code is set to CM_OK, the value of context_ID is not meaningful. context_ID_length (output) Specifies the variable containing the length of the returned context_ID parameter. NOTE: Unless return_code is set to CM_OK, the value of context_ID_length is not meaningful. return_code (output) Specifies the result of the call execution. The return_code variable can have one of the following values: o CM_OK o CM_CALL_NOT_SUPPORTED o CM_PROGRAM_PARAMETER_CHECK This value indicates that the conversation_ID specifies an unassigned conversation identifier. o CM_PROGRAM_STATE_CHECK This value indicates that the conversation is in INITIALIZE or INITIALIZE-INCOMING state. o CM_OPERATION_NOT_ACCEPTED This value indicates that the program has chosen conversation-level non-blocking for the conversation and a previous call operation is still in progress. o CM_PRODUCT_SPECIFIC_ERROR State Changes This call does not cause a state change. Usage Notes 1. This call does not change the context_ID for the specified conversation. 2. A program may want to determine the context for a conversation prior to allocating a new conversation. The program would issue Extract_Conversation_Context to get the context_ID and then would use node services to set that context as the current context prior to issuing the Allocate call for the new conversation. 3. The call is not associated with any conversation queue. When a conversation uses queue-level non-blocking, the call does not return CM_OPERATION_NOT_ACCEPTED on the conversation. ---------------------------------- Extract_Conversation_State (CMECS) A program uses the Extract_Conversation_State (CMECS) call to extract the conversation state for a given conversation. The value is returned in the conversation_state parameter. Format +--------------------------------------------------------------------+ | CALL CMECS(conversation_ID, | | conversation_state, | | return_code) | +--------------------------------------------------------------------+ Parameters conversation_ID (input) Specifies the conversation identifier. conversation_state (output) Specifies the conversation state that is returned to the local program. For half-duplex conversations, the conversation_state can be one of the following: o CM_INITIALIZE_STATE o CM_SEND_STATE o CM_RECEIVE_STATE o CM_SEND_PENDING_STATE o CM_CONFIRM_STATE o CM_CONFIRM_SEND_STATE o CM_CONFIRM_DEALLOCATE_STATE o CM_DEFER_RECEIVE_STATE o CM_DEFER_DEALLOCATE_STATE o CM_SYNC_POINT_STATE o CM_SYNC_POINT_SEND_STATE o CM_SYNC_POINT_DEALLOCATE_STATE o CM_INITIALIZE_INCOMING_STATE o CM_PREPARED_STATE For full-duplex conversations, the conversation_state can be one of the following: o CM_INITIALIZE_STATE o CM_CONFIRM_DEALLOCATE_STATE o CM_DEFER_DEALLOCATE_STATE o CM_SYNC_POINT_STATE o CM_SYNC_POINT_DEALLOCATE_STATE o CM_INITIALIZE_INCOMING_STATE o CM_SEND_ONLY_STATE o CM_RECEIVE_ONLY_STATE o CM_SEND_RECEIVE_STATE o CM_PREPARED_STATE NOTE: Unless return_code is set to CM_OK, the value of conversation_state is not meaningful. return_code (output) Specifies the result of the call execution. The return_code variable can have one of the following values: o CM_OK o CM_PROGRAM_PARAMETER_CHECK This return code indicates that the conversation_ID specifies an unassigned conversation identifier. o CM_TAKE_BACKOUT This value is returned only when all of the following conditions are true: - The sync_level is set to CM_SYNC_POINT or CM_SYNC_POINT_NO_CONFIRM, and the conversation is included in a transaction. - The conversation is not in INITIALIZE, INITIALIZE-INCOMING, CONFIRM-DEALLOCATE, SEND-ONLY, or RECEIVE-ONLY state. - The conversation's context is in the BACKOUT-REQUIRED condition. - The program is using protected resources that must be backed out. o CM_OPERATION_NOT_ACCEPTED This value indicates that the program has chosen conversation-level non-blocking for the conversation and a previous call operation is still in progress. o CM_PRODUCT_SPECIFIC_ERROR State Changes This call does not cause a state change. Usage Notes 1. This call can be used to discover the state of a conversation after it has been backed out during a resource recovery backout operation. 2. The call is not associated with any conversation queue. When a conversation uses queue-level non-blocking, the call does not return CM_OPERATION_NOT_ACCEPTED on the conversation. --------------------------------- Extract_Conversation_Type (CMECT) A program uses the Extract_Conversation_Type (CMECT) call to extract the conversation_type characteristic's value for a given conversation. The value is returned in the conversation_type parameter. Format +--------------------------------------------------------------------+ | CALL CMECT(conversation_ID, | | conversation_type, | | return_code) | +--------------------------------------------------------------------+ Parameters conversation_ID (input) Specifies the conversation identifier. conversation_type (output) Specifies the conversation type that is returned to the local program. The conversation_type can be one of the following: o CM_BASIC_CONVERSATION Indicates that the conversation is allocated as a basic conversation. o CM_MAPPED_CONVERSATION Indicates that the conversation is allocated as a mapped conversation. NOTE: Unless return_code is set to CM_OK, the value of conversation_type is not meaningful. return_code (output) Specifies the result of the call execution. The return_code variable can have one of the following values: o CM_OK o CM_PROGRAM_PARAMETER_CHECK This return code indicates that the conversation_ID specifies an unassigned conversation identifier. o CM_PROGRAM_STATE_CHECK This value indicates that the conversation_ID specifies a conversation in INITIALIZE-INCOMING state. o CM_OPERATION_NOT_ACCEPTED This value indicates that the program has chosen conversation-level non-blocking for the conversation and a previous call operation is still in progress. o CM_PRODUCT_SPECIFIC_ERROR State Changes This call does not cause a state change. Usage Notes 1. This call does not change the conversation_type for the specified conversation. 2. The call is not associated with any conversation queue. When a conversation uses queue-level non-blocking, the call does not return CM_OPERATION_NOT_ACCEPTED on the conversation. ----------------------------------- Extract_Initialization_Data (CMEID) A program uses the Extract_Initialization_Data (CMEID) call to extract the initialization_data and initialization_data_length conversation characteristics received from the remote program for a given conversation. The values are returned to the program in the initialization_data and initialization_data_length parameters. The Extract_Initialization_Data call is used by the recipient of the conversation to extract the incoming initialization data received from the initiator of the conversation. It may be issued following the Accept_Conversation or Accept_Incoming call. When the conversation is using an OSI TP CRM, the Extract_Initialization_Data call may also be used by the initiator of the conversation to extract the incoming initialization data from the recipient of the conversation. In this case, the call may be issued following receipt of a control_information_received value of CM_ALLOCATE_CONFIRMED_WITH_DATA or CM_ALLOCATE_REJECTED_WITH_DATA. Format +--------------------------------------------------------------------+ | CALL CMEID(conversation_ID, | | initialization_data, | | requested_length, | | initialization_data_length, | | return_code) | +--------------------------------------------------------------------+ Parameters conversation_ID (input) Specifies the conversation identifier. initialization_data (output) Specifies the variable containing the initialization data. Initialization data may be from 0 to 10000 bytes. NOTE: Unless return_code is set to CM_OK, the value of initialization_data is not meaningful. requested_length (input) Specifies the length of the initialization_data variable to contain the initialization data. initialization_data_length (output) If return_code is CM_OK, the output value of this parameter specifies the size of the initialization_data variable in bytes. If return_code is CM_BUFFER_TOO_SMALL, this parameter indicates the size of the initialization_data to be extracted. return_code (output) Specifies the result of the call execution. The return_code variable can have one of the following values: o CM_OK o CM_CALL_NOT_SUPPORTED o CM_PROGRAM_PARAMETER_CHECK This value indicates one of the following: - The conversation_ID specifies an unassigned identifier. - The requested_length specifies a value less than 0. o CM_BUFFER_TOO_SMALL The requested_length specifies a value that is less than the size of the initialization_data characteristic to be extracted. The initialization_data characteristic is not returned, but the initialization_data_length parameter is set to indicate the size required. o CM_PROGRAM_STATE_CHECK This value indicates that the conversation_ID specifies a conversation in INITIALIZE-INCOMING state. o CM_OPERATION_NOT_ACCEPTED This value indicates that the program has chosen conversation-level non-blocking for the conversation and a previous call operation is still in progress. o CM_PRODUCT_SPECIFIC_ERROR State Changes This call does not cause any state changes. Usage Notes 1. This call does not change the value of the initialization_data or the initialization_data_length characteristic for the specified conversation. 2. The program that initiates the conversation (issues Initialize_Conversation) must set allocate_confirm to CM_ALLOCATE_CONFIRM if it is expecting initialization data to be returned from the remote program following its confirmation of acceptance of the conversation. 3. The call is not associated with any conversation queue. When a conversation uses queue-level non-blocking, the call does not return CM_OPERATION_NOT_ACCEPTED on the conversation. Related Information "Set_Initialization_Data (CMSID)" describes how the initialization data is set by the remote program. ------------------------------------ Extract_Maximum_Buffer_Size (CMEMBS) A program uses the Extract_Maximum_Buffer_Size (CMEMBS) call to extract the maximum buffer size supported by the system. Format +--------------------------------------------------------------------+ | CALL CMEMBS(maximum_buffer_size, | | return_code) | +--------------------------------------------------------------------+ Parameters maximum_buffer_size (output) Specifies the variable containing the maximum buffer size supported by the system. return_code (output) Specifies the result of the call execution. The return_code variable can have one of the following values: o CM_OK o CM_PRODUCT_SPECIFIC_ERROR State Changes This call causes no state changes. Usage Notes This call can be used to find out the maximum buffer size supported by the system, when the maximum value is not known during program development. The value in maximum_buffer_size determines the largest amount of data the program can send in a Send_Data call or extract in an Extract_Secondary_Information call. The largest amount of data that can be received by the program in a Receive call is: o For a basic conversation - 32767, if the fill characteristic is set to CM_FILL_LL - The value of maximum_buffer_size, if the fill characteristic is set to CM_FILL_BUFFER o For a mapped conversation - The value of maximum_buffer_size. The program should be aware that the CM_INCOMPLETE_DATA_RECEIVED value of the data_received parameter on the Receive call may be returned when the local maximum buffer size is less than the program partner's maximum buffer size. ------------------------- Extract_Mode_Name (CMEMN) A program uses the Extract_Mode_Name (CMEMN) call to extract the mode_name characteristic's value for a given conversation. The value is returned to the program in the mode_name parameter. Format +--------------------------------------------------------------------+ | CALL CMEMN(conversation_ID, | | mode_name, | | mode_name_length, | | return_code) | +--------------------------------------------------------------------+ Parameters conversation_ID (input) Specifies the conversation identifier. mode_name (output) Specifies the variable containing the mode name. The mode name designates the network properties for the logical connection allocated, or to be allocated, which will carry the conversation specified by the conversation_ID. NOTE: Unless return_code is set to CM_OK, the value of mode_name is not meaningful. mode_name_length (output) Specifies the variable containing the length of the returned mode_name parameter. The variable must be defined with a length of at least 8 bytes. NOTE: Unless return_code is set to CM_OK, the value of mode_name_length is not meaningful. return_code (output) Specifies the result of the call execution. The return_code variable can have one of the following values: o CM_OK o CM_PROGRAM_PARAMETER_CHECK This value indicates that the conversation_ID specifies an unassigned conversation identifier. o CM_PROGRAM_STATE_CHECK This value indicates that the conversation_ID specifies a conversation in INITIALIZE-INCOMING state. o CM_OPERATION_NOT_ACCEPTED This value indicates that the program has chosen conversation-level non-blocking for the conversation and a previous call operation is still in progress. o CM_PRODUCT_SPECIFIC_ERROR State Changes This call does not cause a state change. Usage Notes 1. This call does not change the mode_name for the specified conversation. 2. CPI Communications returns the mode_name using the native encoding of the local system. 3. The call is not associated with any conversation queue. When a conversation uses queue-level non-blocking, the call does not return CM_OPERATION_NOT_ACCEPTED on the conversation. --------------------------- Extract_Partner_ID (CMEPID) Programs use the Extract_Partner_ID call to determine the partner_ID characteristic for a conversation. Format +--------------------------------------------------------------------+ | | | CALL CMEPID(conversation_ID, | | partner_ID_type, | | partner_ID, | | requested_length, | | partner_ID_length, | | partner_ID_scope, | | directory_syntax, | | directory_encoding, | | return_code) | +--------------------------------------------------------------------+ Parameters conversation_ID (input) Specifies the conversation ID. partner_ID_type (output) Specifies the type of the partner_ID characteristic. If the call is issued after Allocate completes, the partner_ID_type will be of type CM_PROGRAM_BINDING. partner_ID (output) Specifies the partner_ID characteristic for the conversation. This parameter is only set if the return_code is CM_OK. requested_length (input) The input value of this parameter specifies the maximum size of the partner_ID variable the program is to receive. partner_ID_length (output) If return_code is CM_OK, the output value of this parameter specifies the size of the partner_ID variable in bytes. If return_code is CM_BUFFER_TOO_SMALL, this parameter indicates the size of the partner_ID to be extracted. partner_ID_scope (output) Specifies the scope of the search in the use of the partner_ID. The partner_ID_scope variable only has meaning when the partner_ID is of type CM_DISTINGUISHED_NAME. directory_syntax (output) Specifies the syntax of the distributed directory that CPI Communications accesses with the partner_ID. This parameter has no meaning if partner_ID_type is CM_PROGRAM_BINDING. directory_encoding (output) Specifies the encoding rule of the distributed directory that CPI Communications accesses with the partner_ID. This parameter has no meaning if partner_ID_type is CM_PROGRAM_BINDING. return_code (output) Specifies the result of the call execution. The return_code variable can have one of the following values: o CM_OK o CM_CALL_NOT_SUPPORTED o CM_PROGRAM_STATE_CHECK This value indicates that the conversation is in INITIALIZE-INCOMING state. o CM_PROGRAM_PARAMETER_CHECK This value indicates one of the following: - The conversation_ID specifies an unassigned conversation identifier. - The requested_length specifies a value less than 0. o CM_BUFFER_TOO_SMALL The requested_length specifies a value that is less than the size of the partner_ID characteristic to be extracted. The partner_ID characteristic is not returned, but the partner_ID_length parameter is set to indicate the size required. o CM_OPERATION_NOT_ACCEPTED o CM_PRODUCT_SPECIFIC_ERROR State Changes This call does not cause a state change. Usage Notes 1. Unless the return_code indicates CM_OK or CM_BUFFER_TOO_SMALL, the values of all other parameters on this call have no meaning. 2. If the value specified for the requested_length is less than the size of the partner_ID characteristic to be extracted, the program receives a return code of CM_BUFFER_TOO_SMALL and the partner_ID is not returned. The partner_ID_length parameter, however, is updated to show the size partner_ID parameter required. A subsequent call to Extract_Partner_ID with sufficient size completes successfully. 3. When used before the Allocate call, this call returns the partner_ID value established from side information or by a prior Set_Partner_ID call. After a successful Allocate call, Extract_Partner_ID returns the program binding used to establish the conversation. The program can determine the CRM type on which the conversation is allocated by parsing the program binding. See "Program Binding" on page 1 for details. 4. If the calling program accepts the conversation, the program binding returned to the program may not be complete. For example, programs accepting a conversation with a CRM type of LU 6.2 are not able to access the TP name of the partner program. In these cases, Extract_Partner_ID returns with a partner_ID_type of CM_PROGRAM_BINDING and the partner_ID variable contains as much information on the partner program as is currently available. 5. This call may be issued in RESET state to retrieve the program binding. When the call completes successfully, CPI Communications no longer keeps the partner_ID. The program should issue this call immediately upon entering RESET state, as the duration of the program binding and valid conversation identifier is implementation-specific. Related Information "Distributed Directory" on page 1 explains the terms and concepts required for use of a distributed directory. "Example 3: Using the Distributed Directory to Locate the Partner Program" on page 1 provides a sample scenario of a program using the Extract_Partner_ID call. "Set_Partner_ID (CMSPID)" on page 1 provides details on how to set the partner_ID characteristic. "Program Binding" on page 1 describes the format of a program binding. --------------- (1) International Standardization Organization (ISO) and International Electrotechnical Commission (IEC) standard 10026 1 - 3: Information Technology - Open Systems Interconnection -- Distributed Transaction Processing -- Parts 1 - 3. (2) X/Open CPI-C provides an Extract_Conversation_Security_User_ID call that provides similar function. (3) Communication resource managers can provide many functions in a network. In this manual, the term COMMUNICATION RESOURCE MANAGER refers only to resource managers that provide conversation services to CPI Communications programs. Other CRMs might, for example, provide services for remote procedure calls or message-queuing interfaces. (4) Deallocate(S) refers to a Deallocate call issued with the deallocate_type set to CM_DEALLOCATE_SYNC_LEVEL and the sync_level set to CM_SYNC_POINT or CM_SYNC_POINT_NO_CONFIRM. -------------------------------- Extract_Partner_LU_Name (CMEPLN) A program uses the Extract_Partner_LU_Name (CMEPLN) call to extract the partner_LU_name characteristic's value for a given conversation. The value is returned in the partner_LU_name parameter. Format +--------------------------------------------------------------------+ | CALL CMEPLN(conversation_ID, | | partner_LU_name, | | partner_LU_name_length, | | return_code) | +--------------------------------------------------------------------+ Parameters conversation_ID (input) Specifies the conversation identifier. partner_LU_name (output) Specifies the variable containing the name of the LU where the remote program is located. The variable must be defined with a length of at least 17 bytes. NOTE: Unless return_code is set to CM_OK, the value of partner_LU_name is not meaningful. partner_LU_name_length (output) Specifies the variable containing the length of the returned partner_LU_name parameter. NOTE: Unless return_code is set to CM_OK, the value of partner_LU_name_length is not meaningful. return_code (output) Specifies the result of the call execution. The return_code variable can have one of the following values: o CM_OK o CM_CALL_NOT_SUPPORTED o CM_PROGRAM_PARAMETER_CHECK This value indicates that the conversation_ID specifies an unassigned conversation identifier. o CM_PROGRAM_STATE_CHECK This value indicates that the conversation_ID specifies a conversation in INITIALIZE-INCOMING state. o CM_OPERATION_NOT_ACCEPTED This value indicates that the program has chosen conversation-level non-blocking for the conversation and a previous call operation is still in progress. o CM_PRODUCT_SPECIFIC_ERROR State Changes This call does not cause a state change. Usage Notes 1. This call does not change the partner_LU_name for the specified conversation. 2. CPI Communications returns the partner_LU_name using the native encoding of the local system. 3. The call is not associated with any conversation queue. When a conversation uses queue-level non-blocking, the call does not return CM_OPERATION_NOT_ACCEPTED on the conversation. ------------------------------------- Extract_Secondary_Information (CMESI) Extract_Secondary_Information (CMESI) is used to extract secondary information associated with the return code for a given call. Format +--------------------------------------------------------------------+ | | | CALL CMESI(conversation_ID, | | call_ID, | | buffer, | | requested_length, | | data_received, | | received_length, | | return_code) | +--------------------------------------------------------------------+ Parameters conversation_ID (input) Specifies the conversation identifier. call_ID (input) Specifies the call identifier (see Table 19). buffer (output) Specifies the variable in which the program is to receive the secondary information. NOTE: buffer contains information only if the return_code is set to CM_OK. requested_length (input) Specifies the maximum amount of secondary information the program is to receive. Valid requested_length values range from 1 to the maximum buffer size supported by the system. The maximum buffer size is at least 32767 bytes. See Usage Note 12 of the Receive call for additional information about determining the maximum buffer size. data_received (output) Specifies whether or not the program received complete secondary information. NOTE: Unless return_code is set to CM_OK, the value contained in data_received has no meaning. The data_received variable can have one of the following values: o CM_COMPLETE_DATA_RECEIVED This value indicates that complete secondary information is received. o CM_INCOMPLETE_DATA_RECEIVED This value indicates that more secondary information is available to be received. received_length (output) Specifies the variable containing the amount of secondary information the program received, up to the maximum. NOTE: Unless return_code is set to CM_OK, the value contained in received_length has no meaning. return_code (output) Specifies the result of the call execution. The return_code variable can have one of the following values: o CM_OK o CM_CALL_NOT_SUPPORTED o CM_NO_SECONDARY_INFORMATION This value indicates that no secondary information is available for the specified call on the specified conversation. o CM_PROGRAM_PARAMETER_CHECK This value indicates one of the following: - The conversation_ID specifies an unassigned conversation identifier. - The call_ID specifies CM_CMESI or an undefined value. - The requested_length specifies a value that exceeds the range permitted by the implementation. State Changes This call does not cause a state change. Usage Notes 1. The program should issue the call immediately after it receives a return code at the completion of a call. In particular, when a conversation is deallocated and enters RESET state, the associated secondary information and conversation identifier are available for a system-dependent time. 2. If an Accept_Conversation, Initialize_Conversation, or Initialize_For_Incoming call fails, a conversation identifier is assigned and returned to the program for use only on the Extract_Secondary_Information call. 3. When the Extract_Secondary_Information call completes successfully, CPI Communications no longer keeps the returned secondary information for the specified call on the specified conversation. The same information is not available for a subsequent Extract_Secondary_Information call. 4. The program cannot use the call to retrieve secondary information for the previous Extract_Secondary_Information call. 5. When the call_ID specifies one of the non-conversation calls (that is, Convert_Incoming, Convert_Outgoing, Extract_Maximum_Buffer_Size, Release_Local_TP_Name, Specify_Local_TP_Name, Wait_For_Conversation, and Wait_For_Completion), the conversation_ID is ignored. 6. NOTE TO IMPLEMENTERS: Because of different non-blocking levels, an implementation should maintain secondary information as follows: o For conversations using conversation-level non-blocking, secondary information is kept: - On a per-conversation basis for conversation calls - On a per-thread basis for non-conversation calls o For conversations not using conversation-level non-blocking, secondary information is kept: - On a per-queue basis for calls that are associated with a conversation queue - On a per-thread basis for calls that are not associated with any conversation queue Related Information "Extract_Maximum_Buffer_Size (CMEMBS)" further discusses determining the maximum buffer size supported by the system. "Secondary Information" on page 2 provides a complete discussion of secondary information. --------------------------------- Extract_Security_User_ID (CMESUI) A program uses Extract_Security_User_ID (CMESUI) to extract the value of the security_user_ID characteristic for a given conversation. Format +--------------------------------------------------------------------+ | CALL CMESUI(conversation_ID, | | security_user_ID, | | security_user_ID_length, | | return_code) | +--------------------------------------------------------------------+ Parameters conversation_ID (input) Specifies the conversation identifier. security_user_ID (output) Specifies the variable containing the user ID. The variable must be defined with a length of at least 10 bytes. NOTE: If return_code is not set to CM_OK, security_user_ID is undefined. security_user_ID_length (output) Specifies the variable containing the length of the user ID. NOTE: If return_code is not set to CM_OK, security_user_ID_length is undefined. return_code (output) Specifies the result of the call execution. The return_code variable can have one of the following values: o CM_OK o CM_CALL_NOT_SUPPORTED o CM_PROGRAM_PARAMETER_CHECK This value indicates that the conversation_ID specifies an unassigned conversation identifier. o CM_PROGRAM_STATE_CHECK This value indicates that the program is in INITIALIZE-INCOMING state. o CM_OPERATION_NOT_ACCEPTED This value indicates that the program has chosen conversation-level non-blocking for the conversation and a previous call operation is still in progress. o CM_PRODUCT_SPECIFIC_ERROR State Changes This call does not cause any state changes. Usage Notes 1. This call does not change the security_user_ID for the specified conversation. 2. CPI Communications returns the security_user_ID using the native encoding of the local system. 3. The call is not associated with any conversation queue. When a conversation uses queue-level non-blocking, the call does not return CM_OPERATION_NOT_ACCEPTED on the conversation. ---------------------------------- Extract_Send_Receive_Mode (CMESRM) The Extract_Send_Receive_Mode (CMESRM) call is used by a program to extract the value of the send_receive_mode characteristic for a conversation. The value is returned in the send_receive_mode parameter. Format +--------------------------------------------------------------------+ | CALL CMESRM(conversation_ID, | | send_receive_mode, | | return_code) | +--------------------------------------------------------------------+ Parameters conversation_ID (input) Specifies the conversation identifier. send_receive_mode (output) Specifies the send-receive mode for the conversation. The send_receive_mode variable can have one of the following values: o CM_HALF_DUPLEX Indicates that the conversation is a half-duplex conversation. o CM_FULL_DUPLEX Indicates that the conversation is a full-duplex conversation. NOTE: Unless return_code is set to CM_OK, the value of send_receive_mode is not meaningful. return_code (output) Specifies the result of the call execution. The return_code variable can have one of the following values: o CM_OK o CM_CALL_NOT_SUPPORTED o CM_PROGRAM_PARAMETER_CHECK This value indicates that the conversation_ID specifies an unassigned conversation identifier. o CM_PROGRAM_STATE_CHECK This value indicates that the conversation_ID specifies a conversation in INITIALIZE-INCOMING state. o CM_OPERATION_NOT_ACCEPTED This value indicates that the program has chosen conversation-level non-blocking for the conversation and a previous call operation is still in progress. o CM_PRODUCT_SPECIFIC_ERROR State Changes This call does not cause a state change. Usage Notes 1. This call does not change the send_receive_mode for the specified conversation. 2. This call is not associated with any conversation queue. When a conversation uses queue-level non-blocking, the call does not return CM_OPERATION_NOT_ACCEPTED on the conversation. -------------------------- Extract_Sync_Level (CMESL) A program uses the Extract_Sync_Level (CMESL) call to extract the sync_level characteristic's value for a given conversation. The value is returned to the program in the sync_level parameter. Format +--------------------------------------------------------------------+ | CALL CMESL(conversation_ID, | | sync_level, | | return_code) | +--------------------------------------------------------------------+ Parameters conversation_ID (input) Specifies the conversation identifier. sync_level (output) Specifies the variable containing the sync_level characteristic of this conversation. The sync_level variable can have one of the following values: o CM_NONE Specifies that the programs will not perform confirmation processing on this conversation. The programs will not issue calls or recognize returned parameters relating to synchronization. o CM_CONFIRM (half-duplex conversations only) Specifies that the programs can perform confirmation processing on this conversation. The programs can issue calls and will recognize returned parameters relating to confirmation. o CM_SYNC_POINT (half-duplex conversations only) For systems that support resource recovery processing, this value specifies that this conversation is a protected resource. The programs can issue resource recovery calls and will recognize returned parameters relating to resource recovery operations. The programs can also perform confirmation processing. o CM_SYNC_POINT_NO_CONFIRM For systems that support resource recovery processing, this value specifies that the conversation is a protected resource. The programs can issue resource recovery interface calls and will recognize returned parameters relating to resource recovery processing. The programs cannot perform confirmation processing. NOTES: 1. Unless return_code is set to CM_OK, the value of sync_level is not meaningful. 2. If the conversation is using an OSI TP CRM, confirmation of the deallocation of the conversation can be performed with any sync_level value. return_code (output) Specifies the result of the call execution. The return_code variable can have one of the following values: o CM_OK o CM_PROGRAM_PARAMETER_CHECK This value indicates that the conversation_ID specifies an unassigned conversation identifier. o CM_PROGRAM_STATE_CHECK This value indicates that the conversation_ID specifies a conversation in INITIALIZE-INCOMING state. o CM_OPERATION_NOT_ACCEPTED This value indicates that the program has chosen conversation-level non-blocking for the conversation and a previous call operation is still in progress. o CM_PRODUCT_SPECIFIC_ERROR State Changes This call does not cause a state change. Usage Notes 1. This call does not change the sync_level for the specified conversation. 2. The call is not associated with any conversation queue. When a conversation uses queue-level non-blocking, the call does not return CM_OPERATION_NOT_ACCEPTED on the conversation. ------------------------ Extract_TP_Name (CMETPN) A program uses the Extract_TP_Name (CMETPN) call to extract the TP_name characteristic's value for a given conversation. The value is returned to the program in the TP_name parameter. For a conversation established using Initialize_Conversation, TP_name is the value set from the side information referenced by sym_dest_name or set by the Set_TP_Name call. For a conversation established by Accept_Conversation or Accept_Incoming, TP_name is the value included in the conversation startup request. Since this value comes from the TP_name characteristic of the remote program, the values are the same at both ends of a conversation. Format +--------------------------------------------------------------------+ | CALL CMETPN(conversation_ID, | | TP_name, | | TP_name_length, | | return_code) | +--------------------------------------------------------------------+ Parameters conversation_ID (input) Specifies the conversation identifier. TP_name (output) Specifies the variable containing the TP_name for the specified conversation. The variable must be defined with a length of at least 64 bytes. NOTE: Unless return_code is set to CM_OK, the value in TP_name is not meaningful. TP_name_length (output) Specifies the variable containing the length of the returned TP_name. NOTE: Unless return_code is set to CM_OK, the value in TP_name_length is not meaningful. return_code (output) Specifies the result of the call execution. The return_code variable can have one of the following values: o CM_OK o CM_CALL_NOT_SUPPORTED o CM_PROGRAM_PARAMETER_CHECK This value indicates that the conversation_ID specifies an unassigned conversation identifier. o CM_PROGRAM_STATE_CHECK This value indicates that the conversation is in INITIALIZE-INCOMING state. o CM_OPERATION_NOT_ACCEPTED This value indicates that the program has chosen conversation-level non-blocking for the conversation and a previous call operation is still in progress. o CM_PRODUCT_SPECIFIC_ERROR State Changes This call does not cause any state changes. Usage Notes 1. This call is used by programs that accept multiple conversations. Extract_TP_Name allows the program to determine which local name was specified in the incoming conversation startup request. 2. The call is not associated with any conversation queue. When a conversation uses queue-level non-blocking, the call does not return CM_OPERATION_NOT_ACCEPTED on the conversation. ----------------------------------- Extract_Transaction_Control (CMETC) Extract_Transaction_Control (CMETC) is used by a program to extract the transaction_control characteristic for a given conversation. The value is returned to the application program in the transaction_control parameter. The transaction_control characteristic is used only by an OSI TP CRM and is not significant unless the sync_level characteristic is set to either CM_SYNC_POINT or CM_SYNC_POINT_NO_CONFIRM. Format +--------------------------------------------------------------------+ | CALL CMETC(conversation_ID, | | transaction_control, | | return_code) | +--------------------------------------------------------------------+ Parameters conversation_ID (input) Specifies the conversation identifier. transaction_control (output) Specifies the variable containing the transaction_control characteristic for the specified conversation. The transaction_control variable can have one of the following values: o CM_CHAINED_TRANSACTIONS Specifies that the conversation uses chained transactions. o CM_UNCHAINED_TRANSACTIONS Specifies that the conversation uses unchained transactions. NOTE: Unless return_code is set to CM_OK, the value of transaction_control is not meaningful. return_code (output) Specifies the result of the call execution. The return_code variable can have one of the following values: o CM_OK o CM_CALL_NOT_SUPPORTED o CM_PROGRAM_PARAMETER_CHECK This value indicates that the conversation_ID specifies an unassigned identifier. o CM_PROGRAM_STATE_CHECK This value indicates that the conversation_ID specifies a conversation in INITIALIZE-INCOMING state. o CM_OPERATION_NOT_ACCEPTED This value indicates that the program has chosen conversation-level non-blocking for the conversation and a previous call operation is still in progress. o CM_PRODUCT_SPECIFIC_ERROR State Changes This call does not cause any state changes. Usage Notes 1. This call does not change the transaction_control for the specified conversation. 2. This call is not associated with any conversation queue. When a conversation uses queue-level non-blocking, the call does not return CM_OPERATION_NOT_ACCEPTED. 3. This call can be used by the recipient to determine the transaction_control characteristic for the conversation. If the value is CM_CHAINED_TRANSACTIONS, the conversation is already included in a transaction. If the value is CM_UNCHAINED_TRANSACTIONS, the program will be informed with a CM_JOIN_TRANSACTION status_received value if it is to join the transaction. Related Information "Set_Transaction_Control (CMSTC)" provides more information on the transaction_control characteristic. -------------- Flush (CMFLUS) A program uses the Flush (CMFLUS) call to empty the local system's send buffer for a given conversation. When notified by CPI Communications that a Flush has been issued, the system sends any information it has buffered to the remote system. The information that can be buffered comes from the Allocate, Send_Data, or Send_Error call. Refer to the descriptions of these calls for more details of when and how buffering occurs. Format +--------------------------------------------------------------------+ | CALL CMFLUS(conversation_ID, | | return_code) | +--------------------------------------------------------------------+ Parameters conversation_ID (input) Specifies the conversation identifier. return_code (output) Specifies the result of the call execution. The return_code can be one of the following: o CM_OK o CM_OPERATION_INCOMPLETE o CM_PROGRAM_PARAMETER_CHECK This value indicates that the conversation_ID specifies an unassigned conversation ID. o CM_PROGRAM_STATE_CHECK This value indicates one of the following: - For a half-duplex conversation, the conversation is not in SEND, SEND-PENDING, or DEFER-RECEIVE state. - For a conversation with sync_level set to CM_SYNC_POINT or CM_SYNC_POINT_NO_CONFIRM, the conversation's context is in the BACKOUT-REQUIRED condition. The Flush call is not allowed for this conversation while its context is in this condition. o CM_OPERATION_NOT_ACCEPTED o CM_PRODUCT_SPECIFIC_ERROR The following return codes apply to full-duplex conversations. If the conversation is not currently included in a transaction, the return_code can have one of the following values: o CM_ALLOCATION_ERROR o CM_DEALLOCATED_ABEND o CM_DEALLOCATED_ABEND_SVC o CM_DEALLOCATED_ABEND_TIMER o CM_RESOURCE_FAILURE_NO_RETRY o CM_RESOURCE_FAILURE_RETRY o CM_DEALLOCATED_NORMAL o CM_PROGRAM_STATE_CHECK This value indicates that the program has received a status_received value of CM_JOIN_TRANSACTION and must issue a tx_begin call to the X/Open TX interface to join the transaction. If the sync_level is set to CM_SYNC_POINT_NO_CONFIRM and the conversation is included in a transaction, the return_code can have one of the following values: o CM_TAKE_BACKOUT o CM_DEALLOCATED_ABEND_BO o CM_DEALLOCATED_ABEND_SVC_BO o CM_DEALLOCATED_ABEND_TIMER_BO o CM_RESOURCE_FAILURE_RETRY_BO o CM_RESOURCE_FAIL_NO_RETRY_BO o CM_INCLUDE_PARTNER_REJECT_BO o CM_CONV_DEALLOC_AFTER_SYNCPT State Changes For half-duplex conversations, when return_code indicates CM_OK: o The conversation enters SEND state if the program issues the Flush call with the conversation in SEND-PENDING state. o The conversation enters RECEIVE state if the program issues the Flush call with the conversation in DEFER-RECEIVE state. o No state change occurs if the program issues the Flush call with the conversation in SEND state. For full-duplex conversations, this call does not cause any state changes. Usage Notes 1. This call optimizes processing between the local and remote programs. The local system normally buffers the data from consecutive Send_Data calls until it has a sufficient amount for transmission. Only then does the local system transmit the buffered data. The local program can issue a Flush call to cause the system to transmit the data immediately. This helps minimize any delay in the remote program's processing of the data. 2. The Flush call causes the local system to flush its send buffer only when the system has some information to transmit. If the system has no information in its send buffer, nothing is transmitted to the remote system. 3. The use of Send_Data followed by a call to Flush is equivalent to the use of Send_Data after setting send_type to CM_SEND_AND_FLUSH. 4. For full-duplex conversations, when CM_ALLOCATION_ERROR, CM_DEALLOCATE_*, CM_RESOURCE_FAILURE_*, or CM_DEALLOCATE_NORMAL is returned and the conversation is in SEND-RECEIVE state, the program can terminate the conversation by issuing Receive calls until it gets a return code that takes it to RESET state, or by issuing a Deallocate call with deallocate_type set to CM_DEALLOCATE_ABEND. --------------------------------------- Include_Partner_In_Transaction (CMINCL) A program uses the Include_Partner_In_Transaction (CMINCL) call to explicitly request that the subordinate join the transaction. The caller must be in a transaction, and the subordinate must be on a branch supporting unchained transactions. NOTE: The Include_Partner_In_Transaction call has meaning only when an OSI TP CRM is being used for the conversation. Format +--------------------------------------------------------------------+ | CALL CMINCL(conversation_ID, | | return_code) | +--------------------------------------------------------------------+ Parameters conversation_ID (input) Specifies the conversation identifier. return_code (output) Specifies the result of the call execution. The return_code variable can have one of the following values: o CM_OK o CM_CALL_NOT_SUPPORTED o CM_OPERATION_INCOMPLETE o CM_PROGRAM_PARAMETER_CHECK This value indicates one of the following: - The conversation_ID specifies an unassigned conversation identifier. - The conversation is not using an OSI TP CRM. - The transaction_control is CM_CHAINED_TRANSACTIONS. - The program is not the superior for the conversation. o CM_PROGRAM_STATE_CHECK This value indicates one of the following: - For a half-duplex conversation, the conversation is not in SEND or SEND-PENDING state. - For a full-duplex conversation, the conversation is not in SEND-RECEIVE state. - The conversation is basic and the program started but did not finish sending a logical record. - The conversation's context is not in transaction. The program must issue a tx_begin call to the X/Open TX interface to start a transaction. - The conversation is already included in the current transaction. o CM_DEALLOCATED_ABEND o CM_RESOURCE_FAILURE_NO_RETRY o CM_RESOURCE_FAILURE_RETRY o CM_OPERATION_NOT_ACCEPTED o CM_PRODUCT_SPECIFIC_ERROR The following return codes apply to half-duplex conversations. o CM_SYNC_LVL_NOT_SUPPORTED_SYS o CM_SEND_RCV_MODE_NOT_SUPPORTED o CM_TPN_NOT_RECOGNIZED o CM_TP_NOT_AVAILABLE_NO_RETRY o CM_TP_NOT_AVAILABLE_RETRY o CM_PROGRAM_ERROR_PURGING The following return codes apply to full-duplex conversations. o CM_ALLOCATION_ERROR o CM_DEALLOCATED_NORMAL State Changes This call does not cause any state changes. Usage Notes 1. The call is used by a program to request that the subordinate join the transaction when the begin_transaction conversation characteristic set to CM_BEGIN_EXPLICIT. 2. The remote program receives the request to join the transaction as a status_received indicator of CM_JOIN_TRANSACTION on a Receive call. Related Information "Chained and Unchained Transactions" discusses chained and unchained transactions. "Joining a Transaction" discusses how a program requests the partner program to join a transaction. "Set_Begin_Transaction (CMSBT)" discusses the begin_transaction characteristic. -------------------------------- Initialize_Conversation (CMINIT) A program uses the Initialize_Conversation (CMINIT) call to initialize values for various conversation characteristics before the conversation is allocated (with a call to Allocate). The remote partner program uses the Accept_Conversation call or the Initalize_Incoming and Accept_Incoming calls to initialize values for the conversation characteristics on its end of the conversation. NOTE: A program can override the values that are initialized by this call using the appropriate Set calls, such as Set_Sync_Level. Once the value is changed, it remains changed until the end of the conversation or until changed again by a Set call. Format +--------------------------------------------------------------------+ | CALL CMINIT(conversation_ID, | | sym_dest_name | | return_code) | +--------------------------------------------------------------------+ Parameters conversation_ID (output) Specifies the variable containing the conversation identifier assigned to the conversation. CPI Communications supplies and maintains the conversation_ID. If the Initialize_Conversation call is successful (return_code is set to CM_OK), the local program uses the identifier returned in this variable for the rest of the conversation. sym_dest_name (input) Specifies the symbolic destination name. The symbolic destination name is provided by the program and points to an entry in the side information. The appropriate entry in the side information is retrieved and used to initialize the characteristics for the conversation. Alternatively, a blank sym_dest_name (one composed of eight space characters) may be specified. When this is done, the program is responsible for setting up the appropriate destination information, using Set calls, before issuing the Allocate call for that conversation. return_code (output) Specifies the result of the call execution. The return_code variable can have one of the following values: o CM_OK o CM_PROGRAM_PARAMETER_CHECK This value indicates that the sym_dest_name specifies an unrecognized value. o CM_PRODUCT_SPECIFIC_ERROR State Changes When return_code indicates CM_OK, the conversation enters the INITIALIZE state. Usage Notes 1. For a list of the conversation characteristics that are initialized when the Initialize_Conversation call completes successfully, see Chapter 2 of the SAA CPI Communications Reference. 2. For each conversation, CPI Communications assigns a unique identifier, the conversation_ID. The program then uses the conversation_ID in all future calls intended for that conversation. Initialize_Conversation (or Accept_Conversation or Initialize_For_Incoming, on the opposite side of the conversation) must be issued by the program before any other calls may be made for that conversation. 3. A program can call Initialize_Conversation more than once and establish multiple, concurrently active conversations. When a program with an existing initialized conversation issues an Initialize_Conversation call, CPI Communications initializes a new conversation and assigns a new conversation_ID. CPI Communications is designed so that Initialize_Conversation is always issued from the RESET state. 4. If the side information supplies invalid allocation information on the Initialize_Conversation (CMINIT) call, or if the program supplies invalid allocation information on any subsequent Set calls, the error is detected when the information is processed by Allocate (CMALLC). 5. A program may obtain information about its partner program (for example, partner_LU_name, TP_name, and mode_name) from a source other than the side information. The local program can, for example, read this information from a file or receive it from another partner over a separate conversation. The information might even be hard-coded in the program. In cases where a program wishes to specify destination information about its partner program without making use of side information, the local program may supply a blank sym_dest_name on the Initialize_Conversation call. CPI Communications will initialize the conversation characteristics and return a conversation_ID for the new conversation. The program is then responsible for specifying valid destination information (using Set_Partner_LU_Name, Set_TP_Name, and Set_Mode_Name calls) before issuing the Allocate call. -------------------------------- Initialize_For_Incoming (CMINIC) Initialize_For_Incoming (CMINIC) is used by a program to initialize values for various conversation characteristics before the conversation is accepted with an Accept_Incoming call. NOTE: A program can override the values that are initialized by this call using the appropriate Set calls, such as Set_Receive_Type. Once the value is changed, it remains changed until the end of the conversation or until changed again by a Set call. Format +--------------------------------------------------------------------+ | CALL CMINIC(conversation_ID, | | return_code) | +--------------------------------------------------------------------+ Parameters conversation_ID (output) Specifies the variable containing the conversation identifier assigned to the conversation. CPI Communications supplies and maintains the conversation_ID. If the Initialize_For_Incoming call is successful (return_code is set to CM_OK), the local program uses the identifier returned in this variable for the rest of the conversation. return_code (output) Specifies the result of the call execution. The return_code variable can have one of the following values: o CM_OK o CM_CALL_NOT_SUPPORTED o CM_PRODUCT_SPECIFIC_ERROR State Changes When return_code indicates CM_OK, the conversation enters the INITIALIZE-INCOMING state. Usage Notes 1. For a list of the conversation characteristics initialized when the Initialize_For_Incoming call completes successfully, see Table 3. 2. For each conversation, CPI Communications assigns a unique identifier, the conversation_ID. The program then uses the conversation_ID in all future calls intended for that conversation. 3. The call is designed for use with Accept_Incoming. As shown in Table 3, when Initialize_For_Incoming completes, certain conversation characteristics are initialized. When the Accept_Incoming call completes, the remaining applicable conversation characteristics are initialized. 4. The Initialize_For_Incoming and Accept_Incoming calls can be used by a program to accept multiple conversations. ---------------- Prepare (CMPREP) A program uses the Prepare (CMPREP) call to explicitly request that a branch of the transaction prepare its resources to commit changes made during the transaction. When the conversation is using an OSI TP CRM and the caller is not the root of the transaction, the caller must have received a take-commit notification from its superior. The subordinate program on the conversation cannot issue a Prepare (CMPREP) call. Format +--------------------------------------------------------------------+ | CALL CMPREP(conversation_ID, | | return_code) | +--------------------------------------------------------------------+ Parameters conversation_ID (input) Specifies the conversation identifier. return_code (output) Specifies the result of the call execution. The return_code variable can have one of the following values: o CM_OK o CM_CALL_NOT_SUPPORTED o CM_OPERATION_INCOMPLETE o CM_CONVERSATION_TYPE_MISMATCH o CM_PIP_NOT_SPECIFIED_CORRECTLY o CM_SECURITY_NOT_VALID o CM_SYNC_LVL_NOT_SUPPORTED_PGM o CM_SYNC_LVL_NOT_SUPPORTED_SYS o CM_SEND_RCV_MODE_NOT_SUPPORTED o CM_TPN_NOT_RECOGNIZED o CM_TP_NOT_AVAILABLE_NO_RETRY o CM_TP_NOT_AVAILABLE_RETRY o CM_PROGRAM_PARAMETER_CHECK This value indicates one of the following: - The conversation_ID specifies an unassigned conversation identifier. - The sync_level is not CM_SYNC_POINT or CM_SYNC_POINT_NO_CONFIRM. - The conversation is using an OSI TP CRM, and the program is not the superior for the conversation. o CM_PROGRAM_STATE_CHECK This value indicates one of the following: - For a half-duplex conversation, the conversation is not in SEND, SEND-PENDING, DEFER-RECEIVE, or DEFER-DEALLOCATE state. - For a full-duplex conversation, the conversation is not in SEND-RECEIVE or DEFER-DEALLOCATE state. - The conversation is basic, and the program started but did not finish sending a logical record. - The conversation's context is not in transaction. The program must issue a tx_begin call to the X/Open TX interface to start a transaction. - The sync_level is set to CM_SYNC_POINT or CM_SYNC_POINT_NO_CONFIRM, and the conversation's context is in the BACKOUT-REQUIRED condition. - The conversation is using an OSI TP CRM, begin_transaction is set to CM_BEGIN_EXPLICIT, and the conversation is not currently included in a transaction. - The conversation is using an OSI TP CRM, and the program is not the root of the transaction and has not received a take-commit notification from its superior. o CM_TAKE_BACKOUT o CM_DEALLOCATED_ABEND_BO o CM_DEALLOCATED_ABEND_SVC_BO o CM_DEALLOCATED_ABEND_TIMER_BO o CM_RESOURCE_FAILURE_RETRY_BO o CM_RESOURCE_FAIL_NO_RETRY_BO o CM_INCLUDE_PARTNER_REJECT_BO o CM_OPERATION_NOT_ACCEPTED o CM_PRODUCT_SPECIFIC_ERROR The following return code applies to half-duplex conversations. o CM_PROGRAM_ERROR_PURGING The following return codes apply to full-duplex conversations. o CM_ALLOCATION_ERROR o CM_CONV_DEALLOC_AFTER_SYNCPT State Changes When return_code indicates CM_OK, the conversation enters the PREPARED state. Usage Notes 1. The Prepare (CMPREP) functions without waiting for a response from the remote program. A program can detect that its partner has prepared its transaction resources by issuing a Receive (CMRCV) call and checking the result in status_received, or the caller can complete the transaction without waiting for the partner to respond. 2. A program cannot send data to the remote program after issuing a Prepare call. 3. A program that issues the Prepare call may receive data from the remote program if the conversation is using an OSI TP CRM and either prepare_data_permitted is set to CM_PREPARE_DATA_PERMITTED or the conversation is full-duplex. 4. The partner finds out about the Prepare call by receiving one of the take-commit notifications described in Table 12 or Table 13. Related Information "Receive (CMRCV)" discusses the status_received parameter. "Set_Prepare_Data_Permitted (CMSPDP)" discusses the prepare_data_permitted characteristic. -------------------------- Prepare_To_Receive (CMPTR) A program uses the Prepare_To_Receive (CMPTR) call to change a conversation from SEND to RECEIVE state in preparation to receive data. The change to RECEIVE state can be either completed as part of this call or deferred until the program issues a Flush, Confirm, or resource recovery commit call. When the change to RECEIVE state is completed as part of this call, it may include the function of the Flush or Confirm call. This call's function is determined by the value of the prepare_to_receive_type conversation characteristic. Before issuing the Prepare_To_Receive call, a program has the option of issuing the following call which affects the function of the Prepare_To_Receive call: Call CMSPTR - Set_Prepare_To_Receive_Type NOTE: The Prepare_To_Receive_Type call can be issued only on a half-duplex conversation. Format +--------------------------------------------------------------------+ | CALL CMPTR(conversation_ID, | | return_code) | +--------------------------------------------------------------------+ Parameters conversation_ID (input) Specifies the conversation identifier. return_code (output) Specifies the result of the call execution. The prepare_to_receive_type currently in effect determines which return codes can be returned to the local program. For any of the following conditions: - prepare_to_receive_type is set to CM_PREP_TO_RECEIVE_FLUSH - prepare_to_receive_type is set to CM_PREP_TO_RECEIVE_SYNC_LEVEL and sync_level is set to CM_NONE - prepare_to_receive_type is set to CM_PREP_TO_RECEIVE_SYNC_LEVEL and sync_level is set to CM_SYNC_POINT_NO_CONFIRM, but the conversation is not currently included in a transaction the return_code variable can have one of the following values: o CM_OK o CM_OPERATION_INCOMPLETE o CM_PROGRAM_STATE_CHECK This value indicates one of the following: - The conversation is not in SEND or SEND-PENDING state. - The conversation is basic and in SEND state, and the program started but did not finish sending a logical record. - The sync_level is set to CM_SYNC_POINT or CM_SYNC_POINT_NO_CONFIRM, and the conversation's context is in the BACKOUT-REQUIRED condition. The Prepare_To_Receive call is not allowed while the conversation's context is in this condition. o CM_PROGRAM_PARAMETER_CHECK This value indicates one of the following: - The conversation_ID specifies an unassigned conversation identifier. - The send_receive_mode of the conversation is CM_FULL_DUPLEX. o CM_OPERATION_NOT_ACCEPTED o CM_PRODUCT_SPECIFIC_ERROR For any of the following conditions: - prepare_to_receive_type is set to CM_PREP_TO_RECEIVE_CONFIRM - prepare_to_receive_type is set to CM_PREP_TO_RECEIVE_SYNC_LEVEL and sync_level is set to CM_CONFIRM - prepare_to_receive_type is set to CM_PREP_TO_RECEIVE_SYNC_LEVEL and sync_level is set to CM_SYNC_POINT, but the conversation is not currently included in a transaction the return_code variable can have one of the following values: o CM_OK o CM_OPERATION_INCOMPLETE o CM_CONVERSATION_TYPE_MISMATCH o CM_PIP_NOT_SPECIFIED_CORRECTLY o CM_SECURITY_NOT_VALID o CM_SYNC_LVL_NOT_SUPPORTED_PGM o CM_SYNC_LVL_NOT_SUPPORTED_SYS o CM_SEND_RCV_MODE_NOT_SUPPORTED o CM_TPN_NOT_RECOGNIZED o CM_TP_NOT_AVAILABLE_NO_RETRY o CM_TP_NOT_AVAILABLE_RETRY o CM_DEALLOCATED_ABEND o CM_PROGRAM_ERROR_PURGING o CM_RESOURCE_FAILURE_NO_RETRY o CM_RESOURCE_FAILURE_RETRY o CM_DEALLOCATED_ABEND_SVC (basic conversations only) o CM_DEALLOCATED_ABEND_TIMER (basic conversations only) o CM_SVC_ERROR_PURGING (basic conversations only) o CM_PROGRAM_STATE_CHECK This value indicates one of the following: - The conversation is not in SEND or SEND-PENDING state. - The conversation is basic and in SEND state, and the program started but did not finish sending a logical record. - For a conversation with sync_level set to CM_SYNC_POINT or CM_SYNC_POINT_NO_CONFIRM, the conversation's context is in the BACKOUT-REQUIRED condition. o CM_PROGRAM_PARAMETER_CHECK This return code indicates that the conversation_ID specifies an unassigned conversation identifier. o CM_OPERATION_NOT_ACCEPTED o CM_PRODUCT_SPECIFIC_ERROR o The following values are returned only when sync_level is set to CM_SYNC_POINT: - CM_TAKE_BACKOUT - CM_DEALLOCATED_ABEND_BO - CM_DEALLOCATED_ABEND_SVC_BO (basic conversations only) - CM_DEALLOCATED_ABEND_TIMER_BO (basic conversations only) - CM_RESOURCE_FAIL_NO_RETRY_BO - CM_RESOURCE_FAILURE_RETRY_BO - CM_INCLUDE_PARTNER_REJECT_BO If prepare_to_receive_type is set to CM_PREP_TO_RECEIVE_SYNC_LEVEL, sync_level is set to is CM_SYNC_POINT or CM_SYNC_POINT_NO_CONFIRM, and the conversation is included in a transaction, the return_code variable can have one of the following values: o CM_OK o CM_OPERATION_INCOMPLETE o CM_PROGRAM_STATE_CHECK This value indicates one of the following: - The conversation is not in SEND or SEND-PENDING state. - The conversation is basic and in SEND state, and the program started but did not finish sending a logical record. - The conversation's context is in the BACKOUT-REQUIRED condition. - A prior call to Deferred_Deallocate is still in effect for the conversation. o CM_PROGRAM_PARAMETER_CHECK This value indicates one of the following: - The conversation_ID specifies an unassigned conversation identifier. - The conversation is using an OSI TP CRM, and the program is not the superior for the conversation. - The send_receive_mode of the conversation is CM_FULL_DUPLEX. o CM_OPERATION_NOT_ACCEPTED o CM_PRODUCT_SPECIFIC_ERROR State Changes When return_code indicates CM_OK: o If any of the following conditions is true, the conversation enters the RECEIVE state. - The prepare_to_receive_type is set to CM_PREP_TO_RECEIVE_FLUSH - The prepare_to_receive_type is set to CM_PREP_TO_RECEIVE_CONFIRM - The prepare_to_receive_type is set to CM_PREP_TO_RECEIVE_SYNC_LEVEL and sync_level is set to CM_NONE or CM_CONFIRM - The prepare_to_receive_type is set to CM_PREP_TO_RECEIVE_SYNC_LEVEL, sync_level is set to CM_SYNC_POINT or CM_SYNC_POINT_NO_CONFIRM, but the conversation is not currently included in a transaction. o The conversation enters the DEFER-RECEIVE state if prepare_to_receive_type is set to CM_PREP_TO_RECEIVE_SYNC_LEVEL, sync_level is set to CM_SYNC_POINT or CM_SYNC_POINT_NO_CONFIRM, and the conversation is included in a transaction. Usage Notes 1. If prepare_to_receive_type is set to CM_PREP_TO_RECEIVE_CONFIRM, or if prepare_to_receive_type is set to CM_PREP_TO_RECEIVE_SYNC_LEVEL and sync_level is CM_CONFIRM, or if prepare_to_receive_type is set to CM_PREP_TO_RECEIVE_SYNC_LEVEL and sync_level is CM_SYNC_POINT but the conversation is not currently included in a transaction, the local program regains control when a Confirmed reply is received. 2. The program uses the prepare_to_receive_type characteristic set to CM_PREP_TO_RECEIVE_SYNC_LEVEL to transfer send control to the remote program based on one of the following synchronization levels allocated to the conversation: o If sync_level is set to CM_NONE, or if sync_level is set to CM_SYNC_POINT_NO_CONFIRM but the conversation is not currently included in a transaction, the system's send buffer is flushed if it contains information, and send control is transferred to the remote program without any synchronizing acknowledgment. o If sync_level is set to CM_CONFIRM, or if sync_level is set to CM_SYNC_POINT but the conversation is not currently included in a transaction, the system's send buffer is flushed if it contains information, and send control is transferred to the remote program with confirmation requested. o If sync_level is set to CM_SYNC_POINT or CM_SYNC_POINT_NO_CONFIRM and the conversation is included in a transaction, transfer of send control is deferred. When the local program subsequently issues a Flush, Confirm, or resource recovery commit call, the system's send buffer is flushed if it contains information, and send control is transferred to the remote program. (A synchronization point is also requested when the call is a commit call.) 3. The program uses the prepare_to_receive_type characteristic set to CM_PREP_TO_RECEIVE_FLUSH to transfer send control to the remote program without any synchronizing acknowledgment. The prepare_to_receive_type characteristic set to CM_PREP_TO_RECEIVE_FLUSH functions the same as the prepare_to_receive_type characteristic set to CM_PREP_TO_RECEIVE_SYNC_LEVEL combined with a sync_level set to CM_NONE. 4. The program uses the prepare_to_receive_type characteristic set to CM_PREP_TO_RECEIVE_CONFIRM to transfer send control to the remote program with confirmation requested. The prepare_to_receive_type characteristic set to CM_PREP_TO_RECEIVE_CONFIRM functions the same as the prepare_to_receive_type characteristic set to CM_PREP_TO_RECEIVE_SYNC_LEVEL combined with a sync_level set to CM_CONFIRM. 5. The remote program receives send control of the conversation by means of the status_received parameter, which can have the following values: o CM_SEND_RECEIVED The local program issued this call with one of the following: - prepare_to_receive_type set to CM_PREP_TO_RECEIVE_FLUSH - prepare_to_receive_type set to CM_PREP_TO_RECEIVE_SYNC_LEVEL and sync_level set to CM_NONE - prepare_to_receive_type set to CM_PREP_TO_RECEIVE_SYNC_LEVEL and sync_level set to CM_SYNC_POINT_NO_CONFIRM, but with the conversation not currently included in a transaction. o CM_CONFIRM_SEND_RECEIVED The local program issued this call with one of the following: - prepare_to_receive_type set to CM_PREP_TO_RECEIVE_CONFIRM - prepare_to_receive_type set to CM_PREP_TO_RECEIVE_SYNC_LEVEL and sync_level set to CM_CONFIRM - prepare_to_receive_type set to CM_PREP_TO_RECEIVE_SYNC_LEVEL and sync_level set to CM_SYNC_POINT, but with the conversation not currently included in a transaction. o CM_TAKE_COMMIT_SEND The local program issued a resource recovery commit call after issuing the Prepare_To_Receive call with prepare_to_receive_type set to CM_PREP_TO_RECEIVE_SYNC_LEVEL and sync_level set to CM_SYNC_POINT or CM_SYNC_POINT_NO_CONFIRM, and with the conversation included in a transaction. 6. When the local program's end of the conversation enters RECEIVE state, the remote program's end of the conversation enters SEND or SEND-PENDING state, depending on the data_received indicator. The remote program can then send data to the local program. 7. When the conversation is using an OSI TP CRM and the Deferred_Deallocate call has been issued on the conversation, the Prepare_To_Receive call with prepare_to_receive_type set to CM_PREP_TO_RECEIVE_SYNC_LEVEL is not allowed. The call gets the CM_PROGRAM_PARAMETER_CHECK return code. --------------- Receive (CMRCV) A program uses the Receive (CMRCV) call to receive information from a given conversation. The information received can be a data record (on a mapped conversation), data (on a basic conversation), conversation status, or a request for confirmation or for resource recovery services. Before issuing the Receive call, a program has the option of issuing one or both of the following calls, which affect the function of the Receive call: CALL CMSF -- Set_Fill CALL CMSRT -- Set_Receive_Type Format +--------------------------------------------------------------------+ | CALL CMRCV(conversation_ID, | | buffer, | | requested_length, | | data_received, | | received_length, | | status_received, | | control_information_received, | | return_code) | +--------------------------------------------------------------------+ Parameters conversation_ID (input) Specifies the conversation identifier. buffer (output) Specifies the variable in which the program is to receive the data. NOTE: Buffer contains data only if return_code is set to CM_OK or CM_DEALLOCATED_NORMAL and data_received is not set to CM_NO_DATA_RECEIVED. requested_length (input) Specifies the maximum amount of data the program is to receive. Valid requested_length values range from 0 to the maximum buffer size supported by the system. The maximum buffer size is at least 32767 bytes. See Usage Note 12 for additional information about determining the maximum buffer size. data_received (output) Specifies whether or not the program received data. NOTE: Unless return_code is set to CM_OK or CM_DEALLOCATED_NORMAL, the value contained in data_received has no meaning. The data_received variable can have one of the following values: o CM_NO_DATA_RECEIVED (basic and mapped conversations) No data is received by the program. Status may be received if the return_code is set to CM_OK. o CM_DATA_RECEIVED (basic conversations only) The fill characteristic is set to CM_FILL_BUFFER and data (independent of its logical-record format) is received by the program. o CM_COMPLETE_DATA_RECEIVED (basic and mapped conversations) This value indicates one of the following: - For mapped conversations, a complete data record or the last remaining portion of the record is received. - For basic conversations, fill is set to CM_FILL_LL and a complete logical record, or the last remaining portion of the record, is received. o CM_INCOMPLETE_DATA_RECEIVED (basic and mapped conversations) This value indicates one of the following: - For mapped conversations, less than a complete data record is received. - For basic conversations, fill is set to CM_FILL_LL, and less than a complete logical record is received. NOTE: For either type of conversation, if data_received is set to CM_INCOMPLETE_DATA_RECEIVED, the program must issue another Receive (or possibly multiple Receive calls) to receive the remainder of the data. received_length (output) Specifies the variable containing the amount of data the program received, up to the maximum. If the program does not receive data on this call, the value contained in received_length has no meaning. NOTE: Data is received only if return_code is set to CM_OK or CM_DEALLOCATED_NORMAL, and data_received is not set to CM_NO_DATA_RECEIVED. status_received (output) Specifies the variable containing an indication of the conversation status. NOTE: Unless return_code is set to CM_OK, the value contained in status_received has no meaning. The status_received variable can have one of the following values: o CM_NO_STATUS_RECEIVED No conversation status is received by the program; data may be received. o CM_SEND_RECEIVED (half-duplex conversations only) The remote program's end of the conversation has entered RECEIVE state, placing the local program's end of the conversation in SEND-PENDING state (if the program also received data on this call) or SEND state (if the program did not receive data on this call). The local program (which issued the Receive call) can now send data. o CM_CONFIRM_RECEIVED (half-duplex conversations only) The remote program has sent a confirmation request, requesting the local program to respond by issuing a Confirmed call. The local program must respond by issuing Confirmed, Send_Error, Deallocate with deallocate_type set to CM_DEALLOCATE_ABEND, or Cancel_Conversation. o CM_CONFIRM_SEND_RECEIVED (half-duplex conversations only) The remote program's end of the conversation has entered RECEIVE state with confirmation requested. The local program must respond by issuing Confirmed, Send_Error, Deallocate with deallocate_type set to CM_DEALLOCATE_ABEND, or Cancel_Conversation. Upon issuing a successful Confirmed call, the local program (which issued the Receive call) can now send data. o CM_CONFIRM_DEALLOC_RECEIVED The remote program has deallocated the conversation with confirmation requested. The local program must respond by issuing Confirmed, Send_Error, Deallocate with deallocate_type set to CM_DEALLOCATE_ABEND, or Cancel_Conversation. Upon issuing a successful Confirmed call, the local program (which issued the Receive call) is deallocated--that is, placed in RESET state. For a conversation with sync_level set to CM_SYNC_POINT or CM_SYNC_POINT_NO_CONFIRM, and with the conversation included in a transaction, the status_received variable can also be set to one of the following values: o CM_TAKE_COMMIT The remote program has issued a resource recovery commit call or a Prepare call. For the exact conditions for receipt of this status_received value, refer to Table 12 and Table 13. The local program should issue a commit call in order to commit all protected resources throughout the transaction. When appropriate, the local program may respond by issuing a call other than commit, such as Send_Error (for half-duplex conversations only) or a resource recovery backout call. o CM_TAKE_COMMIT_SEND (for half-duplex conversations only) The remote program has issued a Prepare_To_Receive call with prepare_to_receive_type set to CM_PREP_TO_RECEIVE_SYNC_LEVEL and sync_level set to CM_SYNC_POINT or CM_SYNC_POINT_NO_CONFIRM and then issued a resource recovery commit call or a Prepare call. For the exact conditions for receipt of this status_received value, refer to Table 12 and Table 13. The local program should issue a commit call in order to commit all protected resources throughout the transaction. When appropriate, the local program may respond by issuing a call other than commit, such as Send_Error or a resource recovery backout call. If a successful commit call is issued, the local program can then send data. o CM_TAKE_COMMIT_DEALLOCATE The remote program has deallocated the conversation with deallocate_type set to CM_DEALLOCATE_SYNC_LEVEL and sync_level set to CM_SYNC_POINT or CM_SYNC_POINT_NO_CONFIRM, or has issued a Deferred_Deallocate call, and then issued a resource recovery commit call or a Prepare call. For the exact conditions for receipt of this status_received value, refer to Table 12 and Table 13. The local program should issue a commit call in order to commit all protected resources throughout the transaction. The local program may respond by issuing a call other than commit when appropriate, such as Send_Error for a half-duplex conversation, or a resource recovery backout call. If a successful commit call is issued, the local program is then deallocated--that is, placed in RESET state. o CM_PREPARE_OK By issuing a Prepare (CMPREP) call, the local program requested that the remote program prepare its resources for commitment, and the remote program has done so, by issuing a commit call. The subtree is now ready to commit its resources. For a conversation with sync_level set to either CM_SYNC_POINT or CM_SYNC_POINT_NO_CONFIRM and using an OSI TP CRM, the status_received variable can also be set to one of the following values if the conversation is included in a transaction: o CM_TAKE_COMMIT_DATA_OK The remote program issued a Prepare call. For the exact conditions for receipt of this status_received value, refer to Table 12 and Table 13. The local program should issue a commit call in order to commit all protected resources throughout the transaction. The program is allowed to send data before issuing the commit call. When appropriate, the local program may respond by issuing a call other than commit, such as Send_Error (for half-duplex conversations only) or a resource recovery backout call. o CM_TAKE_COMMIT_SEND_DATA_OK (half-duplex conversations only) The remote program issued a Prepare call. For the exact conditions for receipt of this status_received value, refer to Table 12 and Table 13. The local program should issue a commit call in order to commit all protected resources throughout the transaction. The program is allowed to send data before issuing the commit call. When appropriate, the local program may respond by issuing a call other than commit, such as Send_Error or a resource recovery backout call. If a successful commit call is issued, the local program can then send data. o CM_TAKE_COMMIT_DEALLOC_DATA_OK The remote program issued a Prepare call. For the exact conditions for receipt of this status_received value, refer to Table 12 and Table 13. The local program should issue a commit call in order to commit all protected resources throughout the transaction. The program is allowed to send data before issuing the commit call. The local program may respond by issuing a call other than commit when appropriate, such as Send_Error for a half-duplex conversation, or a resource recovery backout call. If a successful commit call is issued, the local program is then deallocated--that is, placed in RESET state. o CM_JOIN_TRANSACTION (unchained transactions only) The remote program has requested that the local program join its current transaction. The local program should issue a tx_begin call to the X/Open TX interface to join the superior's transaction as soon as any local work that is not to be included in the remote program's transaction has been completed. control_information_received (output) Specifies the variable containing an indication of whether or not control information has been received. The control_information_received variable can have one of the following values: o CM_NO_CONTROL_INFO_RECEIVED Indicates that no control information was received. o CM_REQ_TO_SEND_RECEIVED (half-duplex conversations only) The local program received a request-to-send notification from the remote program. The remote program issued Request_To_Send, requesting the local program's end of the conversation to enter RECEIVE state, which would place the remote program's end of the conversation in SEND state. See the description of the Request_To_Send (CMRTS) call for further discussion of the local program's possible responses. o CM_ALLOCATE_CONFIRMED (OSI TP CRM only) The local program received confirmation of the remote program's acceptance of the conversation. o CM_ALLOCATE_CONFIRMED_WITH_DATA (OSI TP CRM only) The local program received confirmation of the remote program's acceptance of the conversation. The local program may now issue an Extract_Initialization_Data (CMEID) call to receive the initialization data. o CM_ALLOCATE_REJECTED_WITH_DATA (OSI TP CRM only) The remote program rejected the conversation. The local program may now issue an Extract_Initialization_Data (CMEID) call to receive the initialization data. This value will be returned with a return code of CM_OK. The program will receive a CM_DEALLOCATED_ABEND return code on a later call on the conversation. o CM_EXPEDITED_DATA_AVAILABLE (LU 6.2 CRM only) Expedited data is available to be received. o CM_RTS_RCVD_AND_EXP_DATA_AVAIL (half-duplex conversations and LU 6.2 CRM only) The local program received a request-to-send notification from the remote program and expedited data is available to be received. NOTES: 1. The value contained in control_information_received has no meaning only if return_code is set to CM_PROGRAM_PARAMETER_CHECK or CM_PROGRAM_STATE_CHECK. 2. When more than one piece of control information is available to be returned to the program, it will be returned in the following order: o CM_ALLOCATE_CONFIRMED, CM_ALLOCATE_CONFIRMED_WITH_DATA, or CM_ALLOCATE_REJECTED_WITH_DATA o CM_RTS_RCVD_AND_EXP_DATA_AVAIL o CM_REQ_TO_SEND_RECEIVED o CM_EXPEDITED_DATA_AVAILABLE o CM_NO_CONTROL_INFO_RECEIVED return_code (output) Specifies the result of the call execution. The return codes that can be returned depend on the state and characteristics of the conversation at the time this call is issued. The following return codes apply to half-duplex conversations. If receive_type is set to CM_RECEIVE_AND_WAIT and this call is issued in SEND state, return_code can have one of the following values: o CM_OK o CM_OPERATION_INCOMPLETE o CM_CONVERSATION_TYPE_MISMATCH o CM_PIP_NOT_SPECIFIED_CORRECTLY o CM_SECURITY_NOT_VALID o CM_SYNC_LVL_NOT_SUPPORTED_PGM o CM_SYNC_LVL_NOT_SUPPORTED_SYS o CM_SEND_RCV_MODE_NOT_SUPPORTED o CM_TPN_NOT_RECOGNIZED o CM_TP_NOT_AVAILABLE_NO_RETRY o CM_TP_NOT_AVAILABLE_RETRY o CM_DEALLOCATED_ABEND o CM_DEALLOCATED_NORMAL o CM_PROGRAM_ERROR_NO_TRUNC o CM_PROGRAM_ERROR_PURGING o CM_RESOURCE_FAILURE_NO_RETRY o CM_RESOURCE_FAILURE_RETRY o CM_DEALLOCATED_ABEND_SVC (basic conversations only) o CM_DEALLOCATED_ABEND_TIMER (basic conversations only) o CM_SVC_ERROR_NO_TRUNC (basic conversations only) o CM_SVC_ERROR_PURGING (basic conversations only) o CM_OPERATION_NOT_ACCEPTED o CM_PRODUCT_SPECIFIC_ERROR o The following values are returned only when sync_level is set to CM_SYNC_POINT or CM_SYNC_POINT_NO_CONFIRM and the conversation is included in a transaction : - CM_TAKE_BACKOUT - CM_DEALLOCATED_ABEND_BO - CM_DEALLOCATED_ABEND_SVC_BO (basic conversations only) - CM_DEALLOCATED_ABEND_TIMER_BO (basic conversations only) - CM_RESOURCE_FAIL_NO_RETRY_BO - CM_RESOURCE_FAILURE_RETRY_BO - CM_INCLUDE_PARTNER_REJECT_BO If receive_type is set to CM_RECEIVE_AND_WAIT and this call is issued in SEND-PENDING state, return_code can be one of the following values: o CM_OK o CM_OPERATION_INCOMPLETE o CM_DEALLOCATED_ABEND o CM_DEALLOCATED_NORMAL o CM_PROGRAM_ERROR_NO_TRUNC o CM_PROGRAM_ERROR_PURGING o CM_RESOURCE_FAILURE_NO_RETRY o CM_RESOURCE_FAILURE_RETRY o CM_DEALLOCATED_ABEND_SVC (basic conversations only) o CM_DEALLOCATED_ABEND_TIMER (basic conversations only) o CM_SVC_ERROR_NO_TRUNC (basic conversations only) o CM_SVC_ERROR_PURGING (basic conversations only) o CM_OPERATION_NOT_ACCEPTED o CM_PRODUCT_SPECIFIC_ERROR o The following values are returned only when sync_level is set to CM_SYNC_POINT or CM_SYNC_POINT_NO_CONFIRM and the conversation is included in a transaction : - CM_TAKE_BACKOUT - CM_DEALLOCATED_ABEND_BO - CM_DEALLOCATED_ABEND_SVC_BO (basic conversations only) - CM_DEALLOCATED_ABEND_TIMER_BO (basic conversations only) - CM_RESOURCE_FAIL_NO_RETRY_BO - CM_RESOURCE_FAILURE_RETRY_BO - CM_INCLUDE_PARTNER_REJECT_BO If receive_type is set to CM_RECEIVE_AND_WAIT or CM_RECEIVE_IMMEDIATE and this call is issued in RECEIVE or PREPARED state, return_code can be one of the following: o CM_OK o CM_OPERATION_INCOMPLETE This value is only received when receive_type is set to CM_RECEIVE_AND_WAIT. o CM_CONVERSATION_TYPE_MISMATCH o CM_PIP_NOT_SPECIFIED_CORRECTLY o CM_SECURITY_NOT_VALID o CM_SYNC_LVL_NOT_SUPPORTED_PGM o CM_SYNC_LVL_NOT_SUPPORTED_SYS o CM_SEND_RCV_MODE_NOT_SUPPORTED o CM_TPN_NOT_RECOGNIZED o CM_TP_NOT_AVAILABLE_NO_RETRY o CM_TP_NOT_AVAILABLE_RETRY o CM_DEALLOCATED_ABEND o CM_DEALLOCATED_NORMAL o CM_PROGRAM_ERROR_NO_TRUNC o CM_PROGRAM_ERROR_PURGING o CM_PROGRAM_ERROR_TRUNC (basic conversations only) o CM_RESOURCE_FAILURE_NO_RETRY o CM_RESOURCE_FAILURE_RETRY o CM_DEALLOCATED_ABEND_SVC (basic conversations only) o CM_DEALLOCATED_ABEND_TIMER (basic conversations only) o CM_SVC_ERROR_NO_TRUNC (basic conversations only) o CM_SVC_ERROR_PURGING (basic conversations only) o CM_SVC_ERROR_TRUNC (basic conversations only) o CM_UNSUCCESSFUL This value indicates that receive_type is set to CM_RECEIVE_IMMEDIATE, but there is no data or status to receive. o CM_OPERATION_NOT_ACCEPTED o CM_PRODUCT_SPECIFIC_ERROR o The following values are returned only when sync_level is set to CM_SYNC_POINT or CM_SYNC_POINT_NO_CONFIRM and the conversation is included in a transaction: - CM_TAKE_BACKOUT - CM_DEALLOCATED_ABEND_BO - CM_DEALLOCATED_ABEND_SVC_BO (basic conversations only) - CM_DEALLOCATED_ABEND_TIMER_BO (basic conversations only) - CM_RESOURCE_FAIL_NO_RETRY_BO - CM_RESOURCE_FAILURE_RETRY_BO - CM_INCLUDE_PARTNER_REJECT_BO If a state or parameter error has occurred, return_code can have one of the following values: o CM_PROGRAM_STATE_CHECK This value indicates one of the following: - The receive_type is set to CM_RECEIVE_AND_WAIT and the conversation is not in SEND, SEND-PENDING, RECEIVE or PREPARED state. - The receive_type is set to CM_RECEIVE_IMMEDIATE and the conversation is not in RECEIVE or PREPARED state. - The receive_type is set to CM_RECEIVE_AND_WAIT; the conversation is basic and in SEND state; and the program started but did not finish sending a logical record. - For a conversation with sync_level set to CM_SYNC_POINT or CM_SYNC_POINT_NO_CONFIRM, the conversation's context is in the BACKOUT-REQUIRED condition. The Receive call is not allowed for this conversation while its context is in this condition. - The program has received a status_received value of CM_JOIN_TRANSACTION and must issue a tx_begin call to the X/Open TX interface to join the transaction. o CM_PROGRAM_PARAMETER_CHECK This value indicates one of the following: - The conversation_ID specifies an unassigned conversation identifier. - The requested_length specifies a value that exceeds the range permitted by the implementation. The maximum value of the length in each implementation is at least 32767. See Usage Note 12 for additional information about determining the maximum buffer size. The following return codes apply to full-duplex conversations. If the call is issued in SEND-RECEIVE, RECEIVE-ONLY, or PREPARED state, return_code can be one of the following: o CM_OK o CM_PIP_NOT_SPECIFIED_CORRECTLY o CM_CONVERSATION_TYPE_MISMATCH o CM_SECURITY_NOT_VALID o CM_SYNC_LEVEL_NOT_SUPPORTED_PGM o CM_SYNC_LEVEL_NOT_SUPPORTED_SYS o CM_SEND_RCV_MODE_NOT_SUPPORTED o CM_TPN_NOT_RECOGNIZED o CM_TP_NOT_AVAILABLE_NO_RETRY o CM_TP_NOT_AVAILABLE_RETRY o CM_DEALLOCATED_NORMAL o CM_DEALLOCATED_ABEND o CM_DEALLOCATED_ABEND_SVC (basic conversations only) o CM_DEALLOCATED_ABEND_TIMER (basic conversations only) o CM_PROGRAM_ERROR_NO_TRUNC o CM_PROGRAM_ERROR_TRUNC (basic conversations only) o CM_PROGRAM_ERROR_PURGING (OSI TP CRM only) o CM_RESOURCE_FAILURE_RETRY o CM_RESOURCE_FAILURE_NO_RETRY o CM_SVC_ERROR_NO_TRUNC (basic conversations only) o CM_SVC_ERROR_TRUNC (basic conversations only) o CM_OPERATION_NOT_ACCEPTED o CM_OPERATION_INCOMPLETE o CM_PRODUCT_SPECIFIC_ERROR o CM_UNSUCCESSFUL This value indicates that receive_type is set to CM_RECEIVE_IMMEDIATE, but there is nothing to receive. o The following values are returned only if sync_level is CM_SYNC_POINT_NO_CONFIRM and the state is SEND-RECEIVE or PREPARED and the conversation is included in a transaction: - CM_TAKE_BACKOUT - CM_DEALLOCATED_ABEND_BO - CM_DEALLOCATED_ABEND_SCV_BO (basic conversations only) - CM_DEALLOCATED_ABEND_TIMER_BO (basic conversations only) - CM_RESOURCE_FAIL_NO_RETRY_BO - CM_RESOURCE_FAILURE_RETRY_BO - CM_CONV_DEALLOC_AFTER_SYNCPT - CM_INCLUDE_PARTNER_REJECT_BO If a state or parameter error has occurred, return_code can have one of the following values: o CM_PROGRAM_STATE_CHECK This value indicates one of the following: - The conversation is not in SEND-RECEIVE, PREPARED, or RECEIVE-ONLY state. - For a conversation with sync_level set to CM_SYNC_POINT_NO_CONFIRM, the conversation's context is in the BACKOUT REQUIRED condition. The Receive call is not allowed for this conversation while its context is in this condition. - The local program has received a status_received value of CM_JOIN_TRANSACTION and must issue a tx_begin call to the X/Open TX interface to join the transaction. o CM_PROGRAM_PARAMETER_CHECK This value indicates one of the following: - The conversation_ID specifies an unassigned conversation identifier. - The requested_length specifies a value that exceeds the range permitted by the implementation. The maximum value of the length in each implementation is at least 32,767. See Note 12 for additional information about determining the maximum buffer size. State Changes For half-duplex conversations, when return_code indicates CM_OK: o The conversation enters RECEIVE state if a Receive call is issued and all of the following conditions are true: - The receive_type is set to CM_RECEIVE_AND_WAIT. - The conversation is in SEND-PENDING or SEND state. - The data_received indicates CM_DATA_RECEIVED, CM_COMPLETE_DATA_RECEIVED, or CM_INCOMPLETE_DATA_RECEIVED. - The status_received indicates CM_NO_STATUS_RECEIVED. o The conversation enters SEND state when data_received is set to CM_NO_DATA_RECEIVED and status_received is set to CM_SEND_RECEIVED. o The conversation enters SEND-PENDING state when data_received is set to CM_DATA_RECEIVED, or CM_COMPLETE_DATA_RECEIVED, and status_received is set to CM_SEND_RECEIVED. o The conversation enters CONFIRM, CONFIRM-SEND, or CONFIRM-DEALLOCATE state when status_received is set to, respectively, CM_CONFIRM_RECEIVED, CM_CONFIRM_SEND_RECEIVED, or CM_CONFIRM_DEALLOC_RECEIVED. o For a conversation with sync_level set to either CM_SYNC_POINT or CM_SYNC_POINT_NO_CONFIRM, the conversation enters SYNC-POINT, SYNC-POINT-SEND, or SYNC-POINT-DEALLOCATE state when status_received is set to CM_TAKE_COMMIT, CM_TAKE_COMMIT_SEND, or CM_TAKE_COMMIT_DEALLOCATE, respectively. o For a conversation with sync_level set to either CM_SYNC_POINT or CM_SYNC_POINT_NO_CONFIRM, the conversation enters SYNC-POINT, SYNC-POINT-SEND, or SYNC-POINT-DEALLOCATE state when status_received is set to CM_TAKE_COMMIT_DATA_OK, CM_TAKE_COMMIT_SEND_DATA_OK, or CM_TAKE_COMMIT_DEALLOC_DATA_OK, respectively. o No state change occurs when the call is issued in RECEIVE state; data_received is set to CM_DATA_RECEIVED, CM_COMPLETE_DATA_RECEIVED, or CM_INCOMPLETE_DATA_RECEIVED; and status_received indicates CM_NO_STATUS_RECEIVED. o No state change occurs when the call is issued in PREPARED state, or if status_received indicates CM_JOIN_TRANSACTION. For full-duplex conversations, when return_code indicates CM_OK: o No state change occurs when the call is issued in PREPARED or RECEIVE-ONLY state, or if status_received indicates CM_JOIN_TRANSACTION. o The conversation enters CONFIRM-DEALLOCATE state when status_received is set to CM_CONFIRM_DEALLOC_RECEIVED. o For a conversation with sync_level set to CM_SYNC_POINT_NO_CONFIRM, the conversation enters SYNC-POINT state when status_received is set to CM_TAKE_COMMIT or CM_TAKE_COMMIT_DATA_OK, and it enters SYNC-POINT-DEALLOCATE state when status_received is set to CM_TAKE_COMMIT_DEALLOCATE or CM_TAKE_COMMIT_DEALLOC_DATA_OK. Usage Notes 1. If receive_type is set to CM_RECEIVE_AND_WAIT and no information is present when the call is made, CPI Communications waits for information to arrive on the specified conversation before allowing the Receive call to return with the information. If information is already available, the program receives it without waiting. 2. For a half-duplex conversation, if the program issues a Receive call with its end of the conversation in SEND state with receive_type set to CM_RECEIVE_AND_WAIT, the local system will flush its send buffer and send all buffered information to the remote program. The local system will also send a change-of-direction indication. This is a convenient method to change the direction of the conversation, because it leaves the local program's end of the conversation in RECEIVE state and tells the remote program that it may now begin sending data. The local system waits for information to arrive. NOTE: A Receive call in SEND or SEND-PENDING state with a receive_type set to CM_RECEIVE_AND_WAIT generates an implicit execution of Prepare_To_Receive with prepare_to_receive_type set to CM_PREP_TO_RECEIVE_FLUSH, followed by a Receive. Refer to the description of the Prepare_To_Receive (CMPTR) call for more information. 3. If receive_type is set to CM_RECEIVE_IMMEDIATE, a Receive call receives any available information, but does not wait for information to arrive. If information is available, it is returned to the program with an indication of the exact nature of the information received. Since data may not be available when a given Receive call is issued, a program that is using concurrent conversations with multiple partners might use a receive_type of CM_RECEIVE_IMMEDIATE and periodically check each conversation for data. 4. If the return_code indicates CM_PROGRAM_STATE_CHECK or CM_PROGRAM_PARAMETER_CHECK, the values of all other parameters on this call have no meaning. 5. A Receive call issued against a mapped conversation can receive only as much of the data record as specified by the requested_length parameter. The data_received parameter indicates whether the program has received a complete or incomplete data record, as follows: o When the program receives a complete data record or the last remaining portion of a data record, the data_received parameter is set to CM_COMPLETE_DATA_RECEIVED. The length of the record or portion of the record is less than or equal to the length specified on the requested_length parameter. o When the program receives a portion of the data record other than the last remaining portion, the data_received parameter is set to CM_INCOMPLETE_DATA_RECEIVED. The data record is incomplete for one of the following reasons: - receive_type is set to CM_RECEIVE_AND_WAIT, and the length of the record is greater than the length specified on the requested_length parameter. - receive_type is set to CM_RECEIVE_IMMEDIATE, and either the length of the record is greater than the length specified on the requested_length parameter or the last portion of the data record has not arrived from the partner program. In either case, the amount of data received is equal to the received_length specified. 6. When fill is set to CM_FILL_LL on a basic conversation, the program intends to receive a logical record, and there are the following possibilities: o The program receives a complete logical record or the last remaining portion of a complete record. The length of the record or portion of the record is less than or equal to the length specified on the requested_length parameter. The data_received parameter is set to CM_COMPLETE_DATA_RECEIVED. o The program receives an incomplete logical record for one of the following reasons: - The length of the logical record is greater than the length specified on the requested_length parameter. In this case, the amount received equals the length specified. - Only a portion of the logical record is available (possibly because it has been truncated). The portion is equal to or less than the length specified on the requested_length parameter. The data_received parameter is set to CM_INCOMPLETE_DATA_RECEIVED. The program issues another Receive (or possibly multiple Receive calls) to receive the remainder of the logical record. Refer to the Send_Data call for a definition of complete and incomplete logical records. 7. When fill is set to CM_FILL_BUFFER on a basic conversation, the program is to receive data independently of its logical-record format. The program receives an amount of data equal to or less than the length specified on the requested_length parameter. The program can receive less data only under one of the following conditions: o receive_type is set to CM_RECEIVE_AND_WAIT and the end of the data is received. The end of data occurs when it is followed by either: - An indication of a change in the state of the conversation - For a half-duplex conversation, a change to SEND, SEND-PENDING, CONFIRM, CONFIRM-SEND, CONFIRM-DEALLOCATE, SYNC-POINT, SYNC-POINT-SEND, SYNC-POINT-DEALLOCATE, or RESET state - For a full-duplex conversation, a change to SEND-ONLY, CONFIRM-DEALLOCATE, SYNC-POINT, SYNC-POINT-DEALLOCATE, or RESET state - An error indication, such as a CM_PROGRAM_ERROR_NO_TRUNC return code. o receive_type is set to CM_RECEIVE_IMMEDIATE and an amount of data equal to the requested_length specified has not arrived from the partner program. The program is responsible for tracking the logical-record format of the data. 8. The Receive call made with requested_length set to zero has no special significance. The type of information available is indicated by the return_code, data_received, and status_received parameters, as usual. If receive_type is set to CM_RECEIVE_AND_WAIT and no information is available, this call waits for information to arrive. If receive_type is set to CM_RECEIVE_IMMEDIATE, it is possible that no information is available. If data is available, the conversation is basic, and fill is set to CM_FILL_LL, the data_received parameter indicates CM_INCOMPLETE_DATA_RECEIVED. If data is available, the conversation is basic, and fill is set to CM_FILL_BUFFER, the data_received parameter indicates CM_DATA_RECEIVED. If data is available and the conversation is mapped, the data_received parameter is set to CM_INCOMPLETE_DATA_RECEIVED. In all the above cases, the program receives no data. If the conversation is mapped and a null data record is available (resulting from a Send_Data call with send_length set to 0), the data_received parameter is set to CM_COMPLETE_DATA_RECEIVED and the received_length parameter is set to 0. NOTE: When requested_length is set to zero, receipt of either data or status can be indicated, but not both. The only exception to this rule is when a null data record is available for receipt on a mapped conversation. In that case, receipt of the null data record and status can both be indicated. 9. The program can receive both data and conversation status on the same call. However, if the remote program truncates a logical record, the local program receives the indication of the truncation on the Receive call issued by the local program after it receives all of the truncated record. The return_code, data_received, and status_received parameters indicate to the program the kind of information the program receives. 10. The program may receive data and conversation status on the same Receive call or on separate Receive calls. The program should be prepared for either case. 11. For a half-duplex conversation, the request-to-send notification is returned to the program in addition to (not in place of) the information indicated by the return_code, data_received, and status_received parameters. 12. A program must not specify a value in the requested_length parameter that is greater than the maximum the implementation can support. The maximum may vary from system to system. The program can use the Extract_Maximum_Buffer_Size call to determine the maximum supported by the local system. The program can achieve portability across different systems by using one of the following methods: a. Never using a requested_length value greater than 32767. b. Using the Extract_Maximum_Buffer_Size call to determine the maximum buffer size supported by the system and never setting requested_length greater than that maximum buffer size. The program should also be aware that the CM_INCOMPLETE_DATA_RECEIVED value of the data_received parameter may be returned when the maximum buffer size differs across the systems. 13. When the Receive call is processed in non-blocking mode and receive_type is set to CM_RECEIVE_IMMEDIATE, the call completes immediately. If information is not available, return_code is set to CM_UNSUCCESSFUL. 14. When the local program has requested confirmation of the Allocate call and the first call made by the recipient program is Request_To_Send or the recipient program has issued a Send_Expedited_Data call, the CM_ALLOCATE_CONFIRMED value of the control_information_received parameter will be returned first, and one of the following values will be returned at the next opportunity: o CM_RTS_RCVD_AND_EXP_DATA_AVAIL o CM_REQ_TO_SEND_RECEIVED o CM_EXPEDITED_DATA_AVAILABLE 15. The Receive call may be issued following a successful Prepare call, without a state transition to RECEIVE state in case of a half-duplex conversation, for either of these reasons: o To receive data when CM_PREPARE_DATA_PERMITTED is selected and the Prepare Call is issued o To receive a new CM_PREPARE_OK value in status_received. 16. For a full-duplex conversation, if receive_type is set to CM_RECEIVE_AND_WAIT and the conversation startup request has not been sent to the partner, then the Receive call will flush the conversation startup request to the partner. 17. For a full-duplex conversation, if the return code CM_PROGRAM_ERROR_PURGING is received, it indicates that the conversation is allocated using an OSI TP CRM and that data may have been purged. The application has to ensure that the two partners are coordinated. 18. For a full-duplex conversation, when CM_DEALLOCATED_ABEND or CM_DEALLOCATED_ABEND_BO is received, further information on the cause of the deallocation may be obtained by issuing the Extract_Secondary_Information call. 19. When control_information_received indicates that expedited data is available to be received, subsequent calls with this parameter will continue to indicate that expedited data is available until the expedited data has been received by the program. ------------------------------- Receive_Expedited_Data (CMRCVX) A program uses the Receive_Expedited_Data (CMRCVX) call to receive expedited data sent by its partner. This call has meaning only when an LU 6.2 CRM is used for the conversation. Format +--------------------------------------------------------------------+ | CALL CMRCVX(conversation_ID, | | buffer, | | requested_length, | | received_length, | | control_information_received, | | expedited_receive_type, | | return_code) | +--------------------------------------------------------------------+ Parameters conversation_ID (input) Specifies the conversation identifier. buffer (output) Specifies the variable in which the program is to receive the data. requested_length (input) Specifies the maximum amount of data the program is to receive. This length can range from 0 to 86 bytes. received_length (output) When CM_OK is returned to the program, this parameter specifies the amount of data received, which is less than or equal to the buffer size specified in requested_length. When CM_BUFFER_TOO_SMALL is returned to the program, this parameter indicates the size of the data that is available to be received but has not been received. control_information_received (output) Specifies the variable containing an indication of whether or not control information has been received. The control_information_received variable can have one of the following values: o CM_NO_CONTROL_INFO_RECEIVED Indicates that no control information was received. o CM_REQ_TO_SEND_RECEIVED (half-duplex conversations only) The local program received a request-to-send notification from the remote program. The remote program issued Request_To_Send, requesting the local program's end of the conversation to enter RECEIVE state, which would place the remote program's end of the conversation in SEND state. See the description of the Request_To_Send (CMRTS) call for further discussion of the local program's possible responses. o CM_EXPEDITED_DATA_AVAILABLE Expedited data is available to be received. o CM_RTS_RCVD_AND_EXP_DATA_AVAIL (half-duplex conversations only) The local program received a request-to-send notification from the remote program and expedited data is available to be received. NOTES: 1. If return_code is set to CM_PROGRAM_PARAMETER_CHECK or CM_PROGRAM_STATE_CHECK, the value contained in control_information_received has no meaning. 2. When more than one piece of control information is available to be returned to the program, it will be returned in the following order: o CM_RTS_RCVD_AND_EXP_DATA_AVAIL o CM_REQ_TO_SEND_RECEIVED o CM_EXPEDITED_DATA_AVAILABLE o CM_NO_CONTROL_INFO_RECEIVED expedited_receive_type (input) Specifies whether control should be returned to the program immediately or after there is expedited data available to receive. The expedited_receive_type variable can have one of the following values: o CM_RECEIVE_AND_WAIT The Receive_Expedited_Data call is to wait for expedited data to arrive on the specified conversation. If expedited data is already available, the program receives it without waiting. o CM_RECEIVE_IMMEDIATE The Receive_Expedited_Data call is to receive any expedited data that is available from the specified conversation, but is not to wait for expedited data to arrive. return_code (output) Specifies the result of the call execution. The return_code variable can have one of the following values: o CM_OK o CM_CALL_NOT_SUPPORTED o CM_OPERATION_INCOMPLETE o CM_PROGRAM_PARAMETER_CHECK - The conversation_ID specifies an unassigned conversation identifier. - The requested_length specifies a value less than 0 or greater than 86. - The conversation is not using an LU 6.2 CRM. - The expedited_receive_type specifies an undefined value. o CM_PROGRAM_STATE_CHECK This value indicates that the conversation is in INITIALIZE or INITIALIZE-INCOMING state and is not allowed to send expedited data. o CM_CONVERSATION_ENDING This value indicates that the conversation is ending due to a normal deallocation, an allocation error, a Cancel_Conversation call, a Deallocate call with deallocate_type set to CM_DEALLOCATE_ABEND, or a conversation failure. Hence, no expedited data is received. o CM_EXP_DATA_NOT_SUPPORTED This value indicates that the remote system does not support expedited data. o CM_BUFFER_TOO_SMALL This value indicates that the value specified for the requested_length parameter is less than the amount of expedited data to be received. Therefore, no expedited data has been received. o CM_OPERATION_NOT_ACCEPTED o CM_UNSUCCESSFUL This value indicates that the expedited_receive_type parameter was set to CM_RECEIVE_IMMEDIATE and there was no expedited data available to receive. o CM_PRODUCT_SPECIFIC_ERROR State Changes This call does not cause a state change. Usage Notes 1. When expedited data is received by the CRM from the partner program, it is indicated to the local program on the next call it issues that returns the control_information_received parameter. When the program uses multiple threads or queue-level non-blocking, more than one call with the control_information_received parameter may be executed simultaneously. The availability of expedited data will continue to be indicated until the expedited data is received by the program. However, if a request-to-send or an allocate-confirm notification has been received, this notification is given to the program in only one call that has the control_information_received parameter. 2. If the program issues Receive_Expedited_Data with requested_length set to 0 and there is data available to be received, CM_BUFFER_TOO_SMALL is returned. 3. If the program issues Receive_Expedited_Data with requested_length set to 0 and expedited_receive_type set to CM_RECEIVE_AND_WAIT, and there is no data available to be received, the call does not complete until expedited data is available to be received. CM_BUFFER_TOO_SMALL is then returned. ------------------------------ Release_Local_TP_Name (CMRLTP) Release_Local_TP_Name (CMRLTP) is used by a program to release a name. The name is no longer associated with the program. Format +--------------------------------------------------------------------+ | CALL CMRLTP(TP_name, | | TP_name_length, | | return_code) | +--------------------------------------------------------------------+ Parameters TP_name (input) Specifies the name to be released. TP_name_length (input) Specifies the length of TP_name. The length can be from 1 to 64 bytes. return_code (output) Specifies the result of the call execution. The return_code variable can have one of the following values: o CM_OK o CM_CALL_NOT_SUPPORTED o CM_PROGRAM_PARAMETER_CHECK This value indicates one of the following: - The TP_name specifies a name that is not associated with this program. - The TP_name_length specifies a value less than 1 or greater than 64. o CM_PRODUCT_SPECIFIC_ERROR State Changes This call does not cause any state changes. Usage Notes 1. If a return_code other than CM_OK is returned on the call, the names associated with the current program remain unchanged. 2. The names used to satisfy an outstanding Accept_Incoming or Accept_Conversation call are not changed by the Release_Local_TP_Name call. The released name will not be used to satisfy future Accept_Incoming or Accept_Conversation calls. 3. A TP can release a name that was taken from the conversation startup request and used to start the program. 4. If a TP has released all names, no incoming conversations can be accepted. Subsequent Accept_Incoming and Accept_Conversation calls will receive the CM_PROGRAM_STATE_CHECK return code. ----------------------- Request_To_Send (CMRTS) The local program uses the Request_To_Send (CMRTS) call to notify the remote program that the local program would like to enter SEND state for a given conversation. NOTE: The Request_To_Send call has meaning only on a half-duplex conversation. Format +--------------------------------------------------------------------+ | CALL CMRTS(conversation_ID, | | return_code) | +--------------------------------------------------------------------+ Parameters conversation_ID (input) Specifies the conversation identifier. return_code (output) Specifies the result of the call execution. The return_code variable can have one of the following values: o CM_OK o CM_OPERATION_INCOMPLETE o CM_PROGRAM_PARAMETER_CHECK This value indicates one of the following: - The conversation_ID specifies an unassigned conversation identifier. - The send_receive_mode is CM_FULL_DUPLEX. o CM_PROGRAM_STATE_CHECK This value indicates one of the following: - The conversation is not in RECEIVE, SEND, SEND-PENDING, CONFIRM, CONFIRM-SEND, CONFIRM-DEALLOCATE, SYNC-POINT, SYNC-POINT-SEND, SYNC-POINT-DEALLOCATE or PREPARED state. - For a conversation with sync_level set to CM_SYNC_POINT or CM_SYNC_POINT_NO_CONFIRM, the conversation's context is in the BACKOUT-REQUIRED condition. The Request_To_Send call is not allowed for this conversation while its context is in this condition. - For a conversation using an OSI TP CRM, the Request_To_Send call is not allowed from SEND state. - The program has received a status_received value of CM_JOIN_TRANSACTION and must issue a tx_begin call to the X/Open TX interface to join the transaction. o CM_CONVERSATION_ENDING This return code indicates that the local system is ending the conversation or notification has been received from the remote system that it is ending the conversation. o CM_OPERATION_NOT_ACCEPTED o CM_PRODUCT_SPECIFIC_ERROR State Changes This call does not cause a state change. Usage Notes 1. The remote program is informed of the arrival of a request-to-send notification by means of the control_information_received parameter. The control_information_received parameter set to CM_REQ_TO_SEND_RECEIVED or CM_RTS_RCVD_AND_EXP_DATA_AVAIL is a request for the remote program's end of the conversation to enter RECEIVE state in order to place the partner program's end of the conversation (the program that issued the Request_To_Send) in SEND state. The remote program's end of the conversation enters RECEIVE state when the remote program successfully issues one of the following calls or sequences of calls: o The Receive call with receive_type set to CM_RECEIVE_AND_WAIT o The Prepare_To_Receive call with prepare_to_receive_type set to CM_PREP_TO_RECEIVE_FLUSH, CM_PREP_TO_RECEIVE_CONFIRM, or CM_PREP_TO_RECEIVE_SYNC_LEVEL and sync_level set to CM_CONFIRM or CM_NONE, or CM_PREP_TO_RECEIVE_SYNC_LEVEL and sync_level set to CM_SYNC_POINT or CM_SYNC_POINT_NO_CONFIRM, but with the conversation not currently included in a transaction. o The Send_Data call with send_type set to CM_SEND_AND_PREP_TO_RECEIVE and prepare_to_receive_type set to CM_PREP_TO_RECEIVE_FLUSH, CM_PREP_TO_RECEIVE_CONFIRM, or CM_PREP_TO_RECEIVE_SYNC_LEVEL, and sync_level set to CM_CONFIRM or CM_NONE, or CM_PREP_TO_RECEIVE_SYNC_LEVEL and sync_level set to CM_SYNC_POINT or CM_SYNC_POINT_NO_CONFIRM, but with the conversation not currently included in a transaction. o The Prepare_To_Receive call with prepare_to_receive_type set to CM_PREP_TO_RECEIVE_SYNC_LEVEL and sync_level set to CM_SYNC_POINT or CM_SYNC_POINT_NO_CONFIRM, followed by a successful commit, Confirm, or Flush call. o The Send_Data call with send_type set to CM_SEND_AND_PREP_TO_RECEIVE, prepare_to_receive_type set to CM_PREP_TO_RECEIVE_SYNC_LEVEL, and sync_level set to CM_SYNC_POINT or CM_SYNC_POINT_NO_CONFIRM, followed by a successful commit, Confirm, or Flush call. After a remote program issues one of these calls, the local program's end of the conversation is placed into a corresponding SEND, SEND-PENDING, CONFIRM-SEND, or SYNC-POINT-SEND state when the local program issues a Receive call. See the status_received parameter for the Receive call for information about why the state changes from RECEIVE to SEND. 2. The CM_REQ_TO_SEND_RECEIVED value is normally returned to the remote program in the control_information_received parameter when the remote program's end of the conversation is in SEND state (on a Send_Data, Send_Error, Confirm, or Test_Request_To_Send_Received call). However, the value can also be returned on a Receive call. 3. When the remote system receives the request-to-send notification, it retains the notification until the remote program issues a call with the control_information_received parameter. The remote system will retain only one request-to-send notification at a time (per conversation). Additional notifications are discarded until the retained notification is indicated to the remote program. Therefore, a local program may issue the Request_To_Send call more times than are indicated to the remote program. ------------------ Send_Data (CMSEND) A program uses the Send_Data (CMSEND) call to send data to the remote program. When issued during a mapped conversation, this call sends one data record to the remote program. The data record consists entirely of data and is not examined by the system for possible logical records. When issued during a basic conversation, this call sends data to the remote program. The data consists of logical records. The amount of data is specified independently of the data format. Before issuing the Send_Data call, a program has the option of issuing one or more of the following calls, which affect the function of the Send_Data call: CALL CMSST - Set_Send_Type If send_type = CM_SEND_AND_PREP_TO_RECEIVE, optional setup may include: CALL CMSPTR - Set_Prepare_To_Receive_Type If send_type = CM_SEND_AND_DEALLOCATE, optional setup may include: CALL CMSDT - Set_Deallocate_Type Format +--------------------------------------------------------------------+ | CALL CMSEND(conversation_ID, | | buffer, | | send_length, | | control_information_received, | | return_code) | +--------------------------------------------------------------------+ Parameters conversation_ID (input) Specifies the conversation identifier. buffer (input) When a program issues a Send_Data call during a mapped conversation, buffer specifies the data record to be sent. The length of the data record is given by the send_length parameter. When a program issues a Send_Data call during a basic conversation, buffer specifies the data to be sent. The data consists of logical records, each containing a 2-byte length field (denoted as LL) followed by a data field. The length of the data field can range from 0 to 32765 bytes. The 2-byte length field contains the following bits: o A high-order bit that is not examined by the system. It is used, for example, by the system's mapped conversation component in support of the mapped conversation calls. o A 15-bit binary length of the record. The length of the record equals the length of the data field plus the 2-byte length field. Therefore, logical record length values of X'0000', X'0001', X'8000', and X'8001' are not valid. NOTE: The logical record length values shown above (such as X'0000') are in the hexadecimal (base-16) numbering system. send_length (input) For both basic and mapped conversations, the send_length ranges in value from 0 to the maximum buffer size supported by the system. The maximum buffer size is at least 32767 bytes. See Usage Note 10 for additional information about determining the maximum buffer size. The send_length parameter specifies the size of the buffer parameter and the number of bytes to be sent on the conversation. When a program issues a Send_Data call during a mapped conversation and send_length is zero, a null data record is sent. When a program issues a Send_Data call during a basic conversation, send_length specifies the size of the buffer parameter and is NOT related to the length of a logical record. If send_length is zero, no data is sent, and the buffer parameter is not important. However, the other parameters and setup characteristics are significant and retain their meaning as described. control_information_received (output) Specifies the variable containing an indication of whether or not control information has been received. The control_information_received variable can have one of the following values: o CM_NO_CONTROL_INFO_RECEIVED Indicates that no control information was received. o CM_REQ_TO_SEND_RECEIVED (half-duplex conversations only) The local program received a request-to-send notification from the remote program. The remote program issued Request_To_Send, requesting the local program's end of the conversation to enter RECEIVE state, which would place the remote program's end of the conversation in SEND state. See the description of the Request_To_Send (CMRTS) call for further discussion of the local program's possible responses. o CM_ALLOCATE_CONFIRMED (OSI TP CRM only) The local program received confirmation of the remote program's acceptance of the conversation. o CM_ALLOCATE_CONFIRMED_WITH_DATA (OSI TP CRM only) The local program received confirmation of the remote program's acceptance of the conversation. The local program may now issue an Extract_Initialization_Data (CMEID) call to receive the initialization data. o CM_ALLOCATE_REJECTED_WITH_DATA (OSI TP CRM only) The remote program rejected the conversation. The local program may now issue an Extract_Initialization_Data (CMEID) call to receive the initialization data. This value will be returned with a return code of CM_OK. The program will receive a CM_DEALLOCATED_ABEND return code on a later call on the conversation. o CM_EXPEDITED_DATA_AVAILABLE (LU 6.2 CRM only) Expedited data is available to be received. o CM_RTS_RCVD_AND_EXP_DATA_AVAIL (half-duplex conversations and LU 6.2 CRM only) The local program received a request-to-send notification from the remote program and expedited data is available to be received. NOTES: 1. If return_code is set to CM_PROGRAM_PARAMETER_CHECK or CM_PROGRAM_STATE_CHECK, the value contained in control_information_received has no meaning. 2. When more than one piece of control information is available to be returned to the program, it will be returned in the following order: o CM_ALLOCATE_CONFIRMED, CM_ALLOCATE_CONFIRMED_WITH_DATA, or CM_ALLOCATE_REJECTED_WITH_DATA o CM_RTS_RCVD_AND_EXP_DATA_AVAIL o CM_REQ_TO_SEND_RECEIVED o CM_EXPEDITED_DATA_AVAILABLE o CM_NO_CONTROL_INFO_RECEIVED return_code (output) Specifies the result of the call execution. The return_code variable can have one of the following values. The following return codes apply to half-duplex conversations. o CM_OK o CM_OPERATION_INCOMPLETE o CM_CONVERSATION_TYPE_MISMATCH o CM_PIP_NOT_SPECIFIED_CORRECTLY o CM_SECURITY_NOT_VALID o CM_SYNC_LVL_NOT_SUPPORTED_PGM o CM_SYNC_LVL_NOT_SUPPORTED_SYS o CM_SEND_RCV_MODE_NOT_SUPPORTED o CM_TPN_NOT_RECOGNIZED o CM_TP_NOT_AVAILABLE_NO_RETRY o CM_TP_NOT_AVAILABLE_RETRY o CM_PROGRAM_ERROR_PURGING o CM_DEALLOCATED_ABEND o CM_RESOURCE_FAILURE_NO_RETRY o CM_RESOURCE_FAILURE_RETRY o CM_DEALLOCATED_ABEND_SVC (basic conversations only) o CM_DEALLOCATED_ABEND_TIMER (basic conversations only) o CM_SVC_ERROR_PURGING (basic conversations only) o CM_PROGRAM_STATE_CHECK This value indicates one of the following: - The conversation is not in SEND, SEND-PENDING, SYNC-POINT, SYNC-POINT-SEND, or SYNC-POINT-DEALLOCATE state. - The conversation is in SYNC-POINT, SYNC-POINT-SEND, or SYNC-POINT-DEALLOCATE state, and the program received a take-commit notification not ending in *_DATA_OK. - The conversation is basic and in SEND state; the send_type is set to CM_SEND_AND_CONFIRM, CM_SEND_AND_DEALLOCATE, or CM_SEND_AND_PREP_TO_RECEIVE; the deallocate_type is not set to CM_DEALLOCATE_ABEND (if send_type is set to CM_SEND_AND_DEALLOCATE); and the data does not end on a logical record boundary. - For a conversation with sync_level set to CM_SYNC_POINT or CM_SYNC_POINT_NO_CONFIRM, the conversation's context is in the BACKOUT-REQUIRED condition. The Send_Data call is not allowed for this conversation while its context is in this condition. - The conversation is in SYNC-POINT, SYNC-POINT-SEND, or SYNC-POINT-DEALLOCATE state, and send_type is set to CM_SEND_AND_CONFIRM or CM_SEND_AND_PREP_TO_RECEIVE. - The conversation is in SYNC-POINT, SYNC-POINT-SEND, or SYNC-POINT-DEALLOCATE state, the send_type is set to CM_SEND_AND_DEALLOCATE, and the deallocate_type is not set to CM_DEALLOCATE_ABEND. - The send_type is set to CM_SEND_AND_DEALLOCATE and the following conditions are also true: - The deallocate_type is set to CM_DEALLOCATE_FLUSH or CM_DEALLOCATE_CONFIRM. - The sync_level is set to CM_SYNC_POINT or CM_SYNC_POINT_NO_CONFIRM. - The conversation is included in a transaction. o CM_PROGRAM_PARAMETER_CHECK This value indicates one of the following: - The conversation_ID specifies an unassigned conversation identifier. - The send_length exceeds the range permitted by the implementation. The maximum value of the length in each implementation is at least 32767. See Usage Note 10 for additional information about determining the maximum buffer size. - The conversation_type is CM_BASIC_CONVERSATION and buffer contains an invalid logical record length (LL) value of X'0000', X'0001', X'8000', or X'8001'. - The send_type is set to CM_SEND_AND_PREP_TO_RECEIVE and the following conditions are also true: - The prepare_to_receive_type is set to CM_PREP_TO_RECEIVE_SYNC_LEVEL. - The sync_level is set to CM_SYNC_POINT or CM_SYNC_POINT_NO_CONFIRM. - The conversation is included in a transaction. - The conversation is using an OSI TP CRM, and the program is not the superior for the conversation. - The send_type is set to CM_SEND_AND_DEALLOCATE and the following conditions are also true: - The deallocate_type is set to CM_DEALLOCATE_SYNC_LEVEL. - The sync_level is set to CM_SYNC_POINT or CM_SYNC_POINT_NO_CONFIRM. - The conversation is included in a transaction. - The conversation is using an OSI TP CRM, and the program is not the superior for the conversation. o CM_OPERATION_NOT_ACCEPTED o CM_PRODUCT_SPECIFIC_ERROR o The following values are returned only when sync_level is set to CM_SYNC_POINT or CM_SYNC_POINT_NO_CONFIRM and the conversation is included in a transaction: - CM_TAKE_BACKOUT - CM_DEALLOCATED_ABEND_BO - CM_DEALLOCATED_ABEND_SVC_BO (basic conversations only) - CM_DEALLOCATED_ABEND_TIMER_BO (basic conversations only) - CM_RESOURCE_FAIL_NO_RETRY_BO - CM_RESOURCE_FAILURE_RETRY_BO - CM_INCLUDE_PARTNER_REJECT_BO The following return codes apply to full-duplex conversations. The return_code can have one of the following values: o CM_OK o CM_ALLOCATION_ERROR o CM_DEALLOCATED_ABEND o CM_DEALLOCATED_ABEND_SVC o CM_DEALLOCATED_ABEND_TIMER o CM_DEALLOCATED_CONFIRM_REJECT o CM_RESOURCE_FAILURE_NO_RETRY o CM_RESOURCE_FAILURE_RETRY o CM_DEALLOCATED_NORMAL (OSI TP CRM only) o CM_PROGRAM_STATE_CHECK This value indicates one of the following: - The conversation is not in SEND-RECEIVE, SEND-ONLY, SYNC-POINT, or SYNC-POINT-DEALLOCATE state. - The conversation is basic and in SEND-RECEIVE or SEND-ONLY state, the send_type is set to CM_SEND_AND_DEALLOCATE, the deallocate_type is not set to CM_DEALLOCATE_ABEND, and the data does not end on a logical record boundary. - The conversation is in SYNC-POINT or SYNC-POINT DEALLOCATE state and the program received a take-commit notification not ending in *_DATA_OK. - The conversation is in SYNC-POINT, or SYNC-POINT-DEALLOCATE state, the send_type is set to CM_SEND_AND_DEALLOCATE, and the deallocate_type is not set to CM_DEALLOCATE_ABEND. - The send_type is set to CM_SEND_AND_DEALLOCATE and the following conditions are also true: - The deallocate_type is set to CM_DEALLOCATE_FLUSH or CM_DEALLOCATE_CONFIRM. - The sync_level is set to CM_SYNC_POINT_NO_CONFIRM. - The conversation is included in a transaction. - For a conversation with sync_level set to CM_SYNC_POINT_NO_CONFIRM, this return code indicates one of the following: - The conversation's context is in the BACKOUT-REQUIRED condition. The Send_Data call is not allowed for this conversation while its context is in this condition. - The local program has received a status_received value of CM_JOIN_TRANSACTION and must issue a tx_begin call to the X/Open TX interface to join the transaction. o CM_PROGRAM_PARAMETER_CHECK This value indicates one of the following: - The conversation_ID specifies an unassigned conversation identifier. - The send_length exceeds the range permitted by the implementation. The maximum value of the length in each implementation is at least 32767. - The conversation_type is CM_BASIC_CONVERSATION and buffer contains an invalid logical record length (LL) value of X'0000', X'0001', X'8000', or X'8001'. - The send_type is set to CM_SEND_AND_DEALLOCATE and the following conditions are also true: - The deallocate_type is set to CM_DEALLOCATE_FLUSH or CM_DEALLOCATE_CONFIRM. - The sync_level is set to CM_SYNC_POINT_NO_CONFIRM. - The conversation in included in a transaction. - The send_type is set to CM_SEND_AND_DEALLOCATE and the following conditions are also true: - The deallocate_type is set to CM_DEALLOCATE_SYNC_LEVEL. - The sync_level is set to CM_SYNC_POINT_NO_CONFIRM. - The conversation is included in a transaction. - The program is not the superior for the conversation. o CM_OPERATION_NOT_ACCEPTED o CM_OPERATION_INCOMPLETE o CM_PRODUCT_SPECIFIC_ERROR The following values are returned only if sync_level is CM_SYNC_POINT_NO_CONFIRM, the state is SEND-RECEIVE and the conversation is currently included in a transaction. o CM_TAKE_BACKOUT o CM_DEALLOCATED_ABEND_BO o CM_DEALLOCATED_ABEND_SVC_BO (basic conversations only) o CM_DEALLOCATED_ABEND_TIMER_BO (basic conversations only) o CM_RESOURCE_FAIL_NO_RETRY_BO o CM_RESOURCE_FAILURE_RETRY_BO o CM_CONV_DEALLOC_AFTER_SYNCPT o CM_INCLUDE_PARTNER_REJECT_BO State Changes For half-duplex conversations, when return_code indicates CM_OK: o The conversation enters RECEIVE state when Send_Data is issued with send_type set to CM_SEND_AND_PREP_TO_RECEIVE and any of the following conditions are true: - Prepare_to_receive_type is set to CM_PREP_TO_RECEIVE_FLUSH - Prepare_to_receive_type is set to CM_PREP_TO_RECEIVE_CONFIRM - Prepare_to_receive_type is set to CM_PREP_TO_RECEIVE_SYNC_LEVEL and sync_level is set to CM_NONE or CM_CONFIRM - Prepare_to_receive_type is set to CM_PREP_TO_RECEIVE_SYNC_LEVEL, sync_level is set to CM_SYNC_POINT or CM_SYNC_POINT_NO_CONFIRM, but the conversation is not currently included in a transaction. o The conversation enters DEFER-RECEIVE state when Send_Data is issued with send_type set to CM_SEND_AND_PREP_TO_RECEIVE, prepare_to_receive_type set to CM_PREP_TO_RECEIVE_SYNC_LEVEL, sync_level set to CM_SYNC_POINT or CM_SYNC_POINT_NO_CONFIRM, and the conversation is included in a transaction. o The conversation enters RESET state when Send_Data is issued with send_type set to CM_SEND_AND_DEALLOCATE and any of the following conditions is true: - Deallocate_type is set to CM_DEALLOCATE_ABEND - Deallocate_type is set to CM_DEALLOCATE_FLUSH - Deallocate_type is set to CM_DEALLOCATE_CONFIRM - Deallocate_type is set to CM_DEALLOCATE_SYNC_LEVEL and sync_level is set to CM_NONE or CM_CONFIRM - Deallocate_type is set to CM_DEALLOCATE_SYNC_LEVEL, sync_level is set to CM_SYNC_POINT or CM_SYNC_POINT_NO_CONFIRM, but the conversation is not currently included in a transaction. o The conversation enters DEFER-DEALLOCATE state when Send_Data is issued with send_type set to CM_SEND_AND_DEALLOCATE, deallocate_type set to CM_DEALLOCATE_SYNC_LEVEL, sync_level set to CM_SYNC_POINT or CM_SYNC_POINT_NO_CONFIRM, and the conversation is included in a transaction. o The conversation enters SEND state when Send_Data is issued in SEND-PENDING state with send_type set to CM_BUFFER_DATA, CM_SEND_AND_FLUSH, or CM_SEND_AND_CONFIRM. o No state change occurs when Send_Data is issued in SEND state with send_type set to CM_BUFFER_DATA, CM_SEND_AND_FLUSH, or CM_SEND_AND_CONFIRM. For full-duplex conversations, when return_code indicates CM_OK: o The conversation enters RECEIVE-ONLY state when the Send_Data call is issued in SEND-RECEIVE state with send_type set to CM_SEND_AND_DEALLOCATE, and one of the following conditions is true: - deallocate_type is set to CM_DEALLOCATE_FLUSH - deallocate_type is set to CM_DEALLOCATE_SYNC_LEVEL and sync_level is set to CM_NONE - deallocate_type is set to CM_DEALLOCATE_SYNC_LEVEL, sync_level is set to CM_SYNC_POINT_NO_CONFIRM, and the conversation is not currently included in a transaction. o The conversation enters RESET state when the Send_Data call is issued with send_type set to CM_SEND_AND_DEALLOCATE and one of the following conditions is true: - The call is issued in SEND-ONLY state - The call is issued in SEND-RECEIVE, SEND-ONLY, SYNC-POINT, or SYNC-POINT-DEALLOCATE state and deallocate_type is set to CM_DEALLOCATE_ABEND. o The conversation enters DEFER-DEALLOCATE state when the Send_Data call is issued with send_type set to CM_SEND_AND_DEALLOCATE, deallocate_type set to CM_DEALLOCATE_SYNC_LEVEL, sync_level set to CM_SYNC_POINT_NO_CONFIRM, and the conversation included in a transaction. o No state change occurs when Send_Data is issued in SEND-RECEIVE or SEND-ONLY state with send_type set to CM_BUFFER_DATA or CM_SEND_AND_FLUSH. Usage Notes 1. The local system buffers the data to be sent to the remote system until it accumulates a sufficient amount of data for transmission (from one or more Send_Data calls), or until the local program issues a call that causes the system to flush its send buffer. The amount of data sufficient for transmission depends on the characteristics of the logical connection allocated for the conversation, and varies from one logical connection to another. 2. For a half-duplex conversation, when control_information_received indicates CM_REQ_TO_SEND_RECEIVED, or CM_RTS_RCVD_AND_EXP_DATA_AVAIL, or the remote program is requesting the local program's end of the conversation to enter RECEIVE state, which places the remote program's end of the conversation in SEND state. See the description of the Request_To_Send (CMRTS) call for a discussion of how a program can place its end of a conversation in RECEIVE state. 3. When issued during a mapped conversation, the Send_Data call sends one complete data record. The data record consists entirely of data, and CPI Communications does not examine the data for logical record length fields. It is this complete data record that is indicated to the remote program by the data_received parameter of the Receive call. For example, consider a mapped conversation where the local program issues two Send_Data calls with send_length set, respectively, to 30 and then 50. (These numbers are simplistic for explanatory purposes.) The local program then issues Flush and the 80 bytes of data are sent to the remote system. The remote program now issues Receive with requested_length set to a sufficiently large value, say 1000. The remote program will receive back only 30 bytes of data (indicated by the received_length parameter) because this is a complete data record. The completeness of the data record is indicated by the data_received variable, which will be set to CM_COMPLETE_DATA_RECEIVED. The remote program receives the remaining 50 bytes of data (from the second Send_Data) when it performs a second Receive with requested_length set to a value greater than or equal to 50. 4. The data sent by the program during a basic conversation consists of logical records. The logical records are independent of the length of data as specified by the send_length parameter. The data can contain one or more complete records, the beginning of a record, the middle of a record, or the end of a record. The following combinations of data are also possible: o One or more complete records, followed by the beginning of a record o The end of a record, followed by one or more complete records o The end of a record, followed by one or more complete records, followed by the beginning of a record o The end of a record, followed by the beginning of a record 5. The program using a basic conversation must finish sending a logical record before issuing any of the following calls: o Confirm o Deallocate with deallocate_type set to CM_DEALLOCATE_FLUSH, CM_DEALLOCATE_CONFIRM, or CM_DEALLOCATE_SYNC_LEVEL o Include_Partner_In_Transaction o Prepare o Prepare_To_Receive o Receive o Resource recovery commit A program finishes sending a logical record when it sends a complete record or when it truncates an incomplete record. The data must end with the end of a logical record (on a logical record boundary) when Send_Data is issued with send_type set to CM_SEND_AND_CONFIRM, CM_SEND_AND_DEALLOCATE, or CM_SEND_AND_PREP_TO_RECEIVE. 6. A complete logical record contains the 2-byte LL field and all bytes of the data field, as determined by the logical-record length. If the data field length is zero, the complete logical record contains only the 2-byte length field. An incomplete logical record consists of any amount of data less than a complete record. It can consist of only the first byte of the LL field, the 2-byte LL field plus all of the data field except the last byte, or any amount in between. A logical record is incomplete until the last byte of the data field is sent, or until the second byte of the LL field is sent if the data field is of zero length. 7. During a basic conversation, a program can truncate an incomplete logical record by issuing the Send_Error call. Send_Error causes the system to flush its send buffer, which includes sending the truncated record. The system then treats the first two bytes of data specified in the next Send_Data as the LL field. Issuing Send_Data with send_type set to CM_SEND_AND_DEALLOCATE and deallocate_type set to CM_DEALLOCATE_ABEND, or Deallocate with deallocate_type set to CM_DEALLOCATE_ABEND, during a basic conversation also truncates an incomplete logical record. If the log_data characteristic is not null and these conditions occur, log data is sent. 8. Send_Data is often used in combination with other calls, such as Flush, Confirm, and Prepare_To_Receive. Contrast this usage with the equivalent function available from the use of the Set_Send_Type call prior to issuing a call to Send_Data. 9. When A Send_Data call is issued with send_type set to CM_SEND_AND_DEALLOCATE, deallocate_type set to CM_DEALLOCATE_ABEND, and sync_level set to CM_SYNC_POINT or CM_SYNC_POINT_NO_CONFIRM, the conversation's context may be placed in the BACKOUT-REQUIRED condition. 10. A program must not specify a value in the send_length parameter that is greater than the maximum the implementation can support. The maximum may vary from system to system. The program can use the Extract_Maximum_Buffer_Size call to find out the maximum buffer size supported by the local system. The program can achieve portability across different systems by using one of the following methods: a. Never using a send_length value greater than 32767 b. Using the Extract_Maximum_Buffer_Size call to determine the maximum buffer size supported by the system and never setting send_length greater than that maximum buffer size 11. When control_information_received indicates that expedited data is available to be received, subsequent calls with this parameter will continue to indicate that expedited data is available until the expedited data has been received by the program. ------------------- Send_Error (CMSERR) Send_Error (CMSERR) is used by a program to inform the remote program that the local program detected an error during a conversation. If the conversation is in SEND, SEND-RECEIVE, or SEND-ONLY state, Send_Error forces the system to flush its send buffer. For a half-duplex conversation, when this call completes successfully, the local program's end of the conversation is in SEND state and the remote program's end of the conversation is in RECEIVE state. Further action is defined by program logic. For a full-duplex conversation, no state change occurs. The issuance of Send_Error will be reported to the partner on a Receive call. Before issuing the Send_Error call, a program has the option of issuing one or more of the following calls, which affect the function of the Send_Error call: CALL CMSED - Set_Error_Direction (for half-duplex conversations only) CALL CMSLD - Set_Log_Data Format +--------------------------------------------------------------------+ | CALL CMSERR(conversation_ID, | | control_information_received, | | return_code) | +--------------------------------------------------------------------+ Parameters conversation_ID (input) Specifies the conversation identifier. control_information_received (output) Specifies the variable containing an indication of whether or not control information has been received. The control_information_received variable can have one of the following values: o CM_NO_CONTROL_INFO_RECEIVED Indicates that no control information was received. o CM_REQ_TO_SEND_RECEIVED (half-duplex conversations only) The local program received a request-to-send notification from the remote program. The remote program issued Request_To_Send, requesting the local program's end of the conversation to enter RECEIVE state, which would place the remote program's end of the conversation in SEND state. See the description of the Request_To_Send (CMRTS) call for further discussion of the local program's possible responses. o CM_ALLOCATE_CONFIRMED (OSI TP CRM only) The local program received confirmation of the remote program's acceptance of the conversation. o CM_ALLOCATE_CONFIRMED_WITH_DATA (OSI TP CRM only) The local program received confirmation of the remote program's acceptance of the conversation. The local program may now issue an Extract_Initialization_Data (CMEID) call to receive the initialization data. o CM_ALLOCATE_REJECTED_WITH_DATA (OSI TP CRM only) The remote program rejected the conversation. The local program may now issue an Extract_Initialization_Data (CMEID) call to receive the initialization data. This value will be returned with a return code of CM_OK. The program will receive a CM_DEALLOCATED_ABEND return code on a later call on the conversation. o CM_EXPEDITED_DATA_AVAILABLE (LU 6.2 CRM only) Expedited data is available to be received. o CM_RTS_RCVD_AND_EXP_DATA_AVAIL (half-duplex conversations and LU 6.2 CRM only) The local program received a request-to-send notification from the remote program and expedited data is available to be received. NOTES: 1. If return_code is set to CM_PROGRAM_PARAMETER_CHECK or CM_PROGRAM_STATE_CHECK, the value contained in control_information_received has no meaning. 2. When more than one piece of control information is available to be returned to the program, it will be returned in the following order: o CM_ALLOCATE_CONFIRMED, CM_ALLOCATE_CONFIRMED_WITH_DATA, or CM_ALLOCATE_REJECTED_WITH_DATA o CM_RTS_RCVD_AND_EXP_DATA_AVAIL o CM_REQ_TO_SEND_RECEIVED o CM_EXPEDITED_DATA_AVAILABLE o CM_NO_CONTROL_INFO_RECEIVED return_code (output) Specifies the result of the call execution. The value for return_code depends on the state of the conversation at the time this call is issued. The following return codes apply to half-duplex conversations. If the Send_Error is issued in SEND state, return_code can have one of the following values: o CM_OK o CM_OPERATION_INCOMPLETE o CM_CONVERSATION_TYPE_MISMATCH o CM_PIP_NOT_SPECIFIED_CORRECTLY o CM_SECURITY_NOT_VALID o CM_SYNC_LVL_NOT_SUPPORTED_PGM o CM_SYNC_LVL_NOT_SUPPORTED_SYS o CM_SEND_RCV_MODE_NOT_SUPPORTED o CM_TPN_NOT_RECOGNIZED o CM_TP_NOT_AVAILABLE_NO_RETRY o CM_TP_NOT_AVAILABLE_RETRY o CM_DEALLOCATED_ABEND o CM_PROGRAM_ERROR_PURGING o CM_RESOURCE_FAILURE_NO_RETRY o CM_RESOURCE_FAILURE_RETRY o CM_DEALLOCATED_ABEND_SVC (basic conversations only) o CM_DEALLOCATED_ABEND_TIMER (basic conversations only) o CM_SVC_ERROR_PURGING (basic conversations only) o CM_PROGRAM_PARAMETER_CHECK The conversation_ID specifies an unassigned conversation identifier. o CM_OPERATION_NOT_ACCEPTED o CM_PRODUCT_SPECIFIC_ERROR o The following values are returned only when sync_level is set to CM_SYNC_POINT or CM_SYNC_POINT_NO_CONFIRM and the conversation is included in a transaction: - CM_TAKE_BACKOUT - CM_DEALLOCATED_ABEND_BO - CM_DEALLOCATED_ABEND_SVC_BO (basic conversations only) - CM_DEALLOCATED_ABEND_TIMER_BO (basic conversations only) - CM_PROGRAM_STATE_CHECK This return code indicates that for a conversation with sync_level set to CM_SYNC_POINT or CM_SYNC_POINT_NO_CONFIRM, the conversation's context is in the BACKOUT-REQUIRED condition. The Send_Error call is not allowed for this conversation while its context is in this condition. - CM_RESOURCE_FAIL_NO_RETRY_BO - CM_RESOURCE_FAILURE_RETRY_BO - CM_INCLUDE_PARTNER_REJECT_BO If the Send_Error is issued in RECEIVE state, return_code can have one of the following values: o CM_OK o CM_OPERATION_INCOMPLETE o CM_SYNC_LVL_NOT_SUPPORTED_SYS o CM_SEND_RCV_MODE_NOT_SUPPORTED o CM_TPN_NOT_RECOGNIZED o CM_TP_NOT_AVAILABLE_NO_RETRY o CM_TP_NOT_AVAILABLE_RETRY o CM_DEALLOCATED_ABEND o CM_PROGRAM_ERROR_PURGING o CM_DEALLOCATED_NORMAL o CM_RESOURCE_FAILURE_NO_RETRY o CM_RESOURCE_FAILURE_RETRY o CM_PROGRAM_PARAMETER_CHECK The conversation_ID specifies an unassigned conversation identifier. o CM_OPERATION_NOT_ACCEPTED o CM_PRODUCT_SPECIFIC_ERROR o The following values are returned only when sync_level is set to CM_SYNC_POINT or CM_SYNC_POINT_NO_CONFIRM and the conversation is included in a transaction: - CM_TAKE_BACKOUT - CM_DEALLOCATED_ABEND_BO - CM_DEALLOCATED_NORMAL_BO - CM_PROGRAM_STATE_CHECK This return code indicates one of the following: - For a conversation with sync_level set to CM_SYNC_POINT or CM_SYNC_POINT_NO_CONFIRM, the conversation's context is in the BACKOUT-REQUIRED condition. The Send_Error call is not allowed for this conversation while its context is in this condition. - The local program has received a status_received value of CM_JOIN_TRANSACTION and must issue a tx_begin call to the X/Open TX interface to join the transaction. - CM_RESOURCE_FAIL_NO_RETRY_BO - CM_RESOURCE_FAILURE_RETRY_BO - CM_INCLUDE_PARTNER_REJECT_BO If the Send_Error is issued in SEND-PENDING state, return_code can have one of the following values: o CM_OK o CM_OPERATION_INCOMPLETE o CM_RESOURCE_FAILURE_NO_RETRY o CM_RESOURCE_FAILURE_RETRY o CM_PROGRAM_PARAMETER_CHECK The conversation_ID specifies an unassigned conversation identifier. o CM_OPERATION_NOT_ACCEPTED o CM_PRODUCT_SPECIFIC_ERROR o The following values are returned only when sync_level is set to CM_SYNC_POINT or CM_SYNC_POINT_NO_CONFIRM: - CM_TAKE_BACKOUT - CM_PROGRAM_STATE_CHECK This return code indicates that for a conversation with sync_level set to CM_SYNC_POINT or CM_SYNC_POINT_NO_CONFIRM, the conversation's context is in the BACKOUT-REQUIRED condition. The Send_Error call is not allowed for this conversation while its context is in this condition. - CM_RESOURCE_FAIL_NO_RETRY_BO - CM_RESOURCE_FAILURE_RETRY_BO - CM_INCLUDE_PARTNER_REJECT_BO If the Send_Error call is issued in CONFIRM, CONFIRM-SEND, CONFIRM-DEALLOCATE, SYNC-POINT, SYNC-POINT-SEND, or SYNC-POINT-DEALLOCATE state, return_code can have one of the following values: o CM_OK o CM_OPERATION_INCOMPLETE o CM_PROGRAM_PARAMETER_CHECK The conversation_ID specifies an unassigned conversation identifier. o CM_PROGRAM_STATE_CHECK This return code indicates that for a conversation with sync_level set to CM_SYNC_POINT or CM_SYNC_POINT_NO_CONFIRM, the conversation's context is in the BACKOUT-REQUIRED condition. The Send_Error call is not allowed for this conversation while its context is in this condition. o CM_TAKE_BACKOUT This value is returned only when the Send_Error call is issued in SYNC-POINT, SYNC-POINT-SEND, or SYNC-POINT-DEALLOCATE state, and only when the conversation is using an OSI TP CRM. o CM_RESOURCE_FAILURE_NO_RETRY o CM_RESOURCE_FAILURE_RETRY o CM_RESOURCE_FAIL_NO_RETRY_BO This value is returned only when sync_level is set to CM_SYNC_POINT or CM_SYNC_POINT_NO_CONFIRM. o CM_RESOURCE_FAILURE_RETRY_BO This value is returned only when sync_level is set to CM_SYNC_POINT or CM_SYNC_POINT_NO_CONFIRM. o CM_OPERATION_NOT_ACCEPTED o CM_PRODUCT_SPECIFIC_ERROR Otherwise, the conversation is in RESET, INITIALIZE, DEFER-RECEIVE, DEFER-DEALLOCATE, INITIALIZE-INCOMING, or PREPARED state and return_code has one of the following values: o CM_PROGRAM_PARAMETER_CHECK The conversation_ID specifies an unassigned identifier. o CM_OPERATION_NOT_ACCEPTED o CM_PROGRAM_STATE_CHECK The following return codes apply to full-duplex conversations. The return_code variable can have one of the following values: o CM_OK o CM_ALLOCATION_ERROR o CM_DEALLOCATED_ABEND o CM_DEALLOCATED_ABEND_SVC o CM_DEALLOCATED_ABEND_TIMER o CM_RESOURCE_FAILURE_NO_RETRY o CM_RESOURCE_FAILURE_RETRY o CM_DEALLOCATED_NORMAL (OSI TP CRM only) o CM_PROGRAM_STATE_CHECK This value indicates one of the following: - The conversation is not in SEND-RECEIVE, SEND-ONLY, or CONFIRM-DEALLOCATE state. - The local program has received a status_received value of CM_JOIN_TRANSACTION and must issue a tx_begin call to the X/Open TX interface to join the transaction. - For a conversation with sync_level set to CM_SYNC_POINT_NO_CONFIRM, the conversation's context is in the BACKOUT-REQUIRED condition. The Send_Error call is not allowed for this conversation while its context is in this condition. o CM_PROGRAM_PARAMETER_CHECK This value indicates the conversation_ID specifies an unassigned conversation identifier. o CM_OPERATION_NOT_ACCEPTED o CM_OPERATION_INCOMPLETE o CM_PRODUCT_SPECIFIC_ERROR o The following values are returned only if sync_level is CM_SYNC_POINT_NO_CONFIRM, the state is SEND-RECEIVE, and the conversation is included in a transaction. - CM_TAKE_BACKOUT - CM_DEALLOCATED_ABEND_BO - CM_DEALLOCATED_ABEND_SVC_BO (basic conversations only) - CM_DEALLOCATED_ABEND_TIMER_BO (basic conversations only) - CM_RESOURCE_FAIL_NO_RETRY_BO - CM_RESOURCE_FAILURE_RETRY_BO - CM_CONV_DEALLOC_AFTER_SYNCPT - CM_INCLUDE_PARTNER_REJECT_BO State Changes For half-duplex conversations, when return_code indicates CM_OK: o The conversation enters SEND state when the call is issued in RECEIVE, CONFIRM, CONFIRM-SEND, CONFIRM-DEALLOCATE, or SEND-PENDING state. For a conversation with sync_level set to CM_SYNC_POINT or CM_SYNC_POINT_NO_CONFIRM and which is included in a transaction, the conversation also enters SEND state when the call is issued in SYNC-POINT, SYNC-POINT-SEND, or SYNC-POINT-DEALLOCATE state. o No state change occurs when the call is issued in SEND state. For full-duplex conversations, when return_code indicates CM_OK, the conversation enters SEND-RECEIVE state when this call is issued in CONFIRM-DEALLOCATE state. Usage Notes 1. The system can send the error notification to the remote system immediately (during the processing of this call), or the system can delay sending the notification until a later time. If the system delays sending the notification, it buffers the notification until it has accumulated a sufficient amount of information for transmission, or until the local program issues a call that causes the system to flush its send buffer. 2. The amount of information sufficient for transmission depends on the characteristics of the logical connection allocated for the conversation, and varies from one logical connection to another. Transmission of the information can begin immediately if the log_data characteristic has been specified with sufficient log data, or transmission can be delayed until sufficient data from subsequent Send_Data calls is also buffered. 3. To make sure that the remote program receives the error notification as soon as possible, the local program can issue Flush immediately after Send_Error. 4. For a half-duplex conversation using an LU 6.2 CRM, the issuance of Send_Error is reported to the remote program as one of the following return codes: o CM_PROGRAM_ERROR_TRUNC (basic conversation) The local program issued Send_Error with its end of the conversation in SEND state after sending an incomplete logical record (see the description of the Send_Data (CMSEND) call). The record has been truncated. o CM_PROGRAM_ERROR_NO_TRUNC (basic and mapped conversations) The local program issued Send_Error with its end of the conversation in SEND state after sending a complete logical record (basic) or data record (mapped); or before sending any record; or the local program issued Send_Error with its end of the conversation in SEND-PENDING state with error_direction set to CM_SEND_ERROR. No truncation has occurred. o CM_PROGRAM_ERROR_PURGING (basic and mapped conversations) The local program issued Send_Error with its end of the conversation in RECEIVE state, and all information sent by the remote program and not yet received by the local program has been purged. Or the local program issued Send_Error with its end of the conversation in SEND-PENDING state and error_direction set to CM_RECEIVE_ERROR or in CONFIRM, CONFIRM-SEND, or CONFIRM-DEALLOCATE state, and no purging has occurred. 5. If the conversation is using an OSI TP CRM, the remote program receives CM_PROGRAM_ERROR_PURGING, regardless of the conversation state. 6. When a half-duplex conversation is using an LU 6.2 CRM and Send_Error is issued in RECEIVE state, incoming information is also purged. Because of this purging, the return_code of CM_DEALLOCATED_NORMAL is reported instead of: o CM_CONVERSATION_TYPE_MISMATCH o CM_PIP_NOT_SPECIFIED_CORRECTLY o CM_SECURITY_NOT_VALID o CM_SYNC_LVL_NOT_SUPPORTED_PGM o CM_TPN_NOT_RECOGNIZED o CM_TP_NOT_AVAILABLE_NO_RETRY o CM_TP_NOT_AVAILABLE_RETRY o CM_DEALLOCATED_ABEND o CM_DEALLOCATED_ABEND_SVC (basic conversations only) o CM_DEALLOCATED_ABEND_TIMER (basic conversations only) Likewise, for conversations with sync_level set to CM_SYNC_POINT, a return code of CM_DEALLOCATED_NORMAL_BO is reported instead of: o CM_DEALLOCATED_ABEND_BO o CM_DEALLOCATED_ABEND_SVC_BO (basic conversations only) o CM_DEALLOCATED_ABEND_TIMER_BO (basic conversations only) Similarly, a return code of CM_OK is reported instead of: o CM_PROGRAM_ERROR_NO_TRUNC o CM_PROGRAM_ERROR_PURGING o CM_PROGRAM_ERROR_TRUNC (basic conversations only) o CM_SVC_ERROR_NO_TRUNC (basic conversations only) o CM_SVC_ERROR_PURGING (basic conversations only) o CM_SVC_ERROR_TRUNC (basic conversations only) o CM_TAKE_BACKOUT When the return code CM_TAKE_BACKOUT is purged, the remote system resends the backout indication and the local program receives the CM_TAKE_BACKOUT return code on a subsequent call. The following types of incoming information are also purged: o Data sent with the Send_Data call. o Confirmation request sent with the Send_Data, Confirm, Prepare_To_Receive, or Deallocate call. If the confirmation request was sent with deallocate_type set to CM_DEALLOCATE_CONFIRM or CM_DEALLOCATE_SYNC_LEVEL, the deallocation request will also be purged. o Prepare call or resource recovery commit call. If the Prepare or commit call was sent in conjunction with a Deallocate call with deallocate_type set to CM_DEALLOCATE_SYNC_LEVEL, the deallocation request will also be purged. The request-to-send notification is not purged. This notification is reported to the program when it issues a call that includes the control_information_received parameter. 7. The program can use this call for various application-level functions. For example, the program can issue this call to truncate an incomplete logical record it is sending; to inform the remote program of an error detected in data received; or to reject a confirmation request. 8. If the log_data_length characteristic is greater than zero, the system formats the supplied log data into the appropriate format. The data supplied by the program is any data the program wants to have logged. The data is logged on the local system's error log and is also sent to the remote system for logging there. The log_data is not sent on the Send_Error call when an OSI TP CRM is being used for the conversation. Instead, it is ignored. After completion of the Send_Error processing, log_data is reset to null, and log_data_length is reset to zero. 9. The error_direction characteristic is significant only when a half-duplex conversation is using an LU 6.2 CRM and Send_Error is issued in SEND-PENDING state (that is, the Send_Error is issued immediately following a Receive on which both data and a status_received parameter set to CM_SEND_RECEIVED is received). In this case, Send_Error could be reporting one of the following types of errors: o An error in the received data (in the receive flow) o An error having nothing to do with the received data, but instead being the result of processing performed by the program after it had successfully received and processed the data (in the send flow). Because the system cannot tell which of the two errors occurred, the program has to supply the error_direction information. The default for error_direction is CM_RECEIVE_ERROR. A program can override the default using the Set_Error_Direction call before issuing Send_Error. Once changed, the new error_direction value remains in effect until the program changes it again. Therefore, a program should issue Set_Error_Direction before issuing Send_Error for a conversation in SEND-PENDING state. If the conversation is not in SEND-PENDING state, the error_direction characteristic is ignored. 10. When control_information_received indicates that expedited data is available, subsequent calls with this parameter will continue to indicate that expedited data is available until the expedited data has been received by the program. 11. For full-duplex conversations, the issuance of Send_Error is reported on the remote program's Receive call as one of the following return codes: o CM_PROGRAM_ERROR_NO_TRUNC (basic and mapped conversations using an LU 6.2 CRM) o CM_PROGRAM_ERROR_TRUNC (basic conversations using an LU 6.2 CRM) o CM_PROGRAM_ERROR_PURGING (conversations using an OSI TP CRM) No data is purged, unless the conversation is using an OSI TP CRM, in which case, the program should expect purging. The partner program may expect the CM_PROGRAM_ERROR_PURGING return code if the conversation is allocated using an OSI TP CRM. The programs may know whether to expect purging by issuing an Extract_Partner_ID call. 12. Send_Error does not complete successfully if an error that causes the conversation to terminate has occurred or the remote program has issued a Cancel_Conversation call, a Deallocate call with deallocate_type set to CM_DEALLOCATE_ABEND, or a Deallocate call with deallocate_type set to CM_DEALLOCATE_FLUSH and the conversation has been allocated using an OSI TP CRM. For a conversation which is not included in a transaction, a CM_DEALLOCATED_ABEND_*, CM_ALLOCATION_ERROR, CM_RESOURCE_FAILURE_*_RETRY, or CM_DEALLOCATED_NORMAL return code is returned. When one of the above return codes is returned and the conversation is in SEND-RECEIVE state, the program can terminate the conversation by issuing Receives until it gets one of the above return codes taking it to RESET state, or by issuing Cancel_Conversation or Deallocate with deallocate_type set to CM_DEALLOCATE_ABEND. For a conversation which is included in a transaction, CM_DEALLOCATED_ABEND_*_BO, CM_ALLOCATION_ERROR, CM_RESOURCE_FAILURE_RETRY_BO, or CM_RESOURCE_FAIL_NO_RETRY_BO is returned. If CM_ALLOCATION_ERROR is returned, the program behaves as though it were not in transaction, otherwise it is in BACKOUT-REQUIRED condition and in RESET state. ---------------------------- Send_Expedited_Data (CMSNDX) A program uses the Send_Expedited_Data (CMSNDX) call to send expedited data to its partner. This call has meaning only when an LU 6.2 CRM is used for the conversation. Format +--------------------------------------------------------------------+ | CALL CMSNDX(conversation_ID, | | buffer, | | send_length, | | control_information_received, | | return_code) | +--------------------------------------------------------------------+ Parameters conversation_ID (input) Specifies the conversation identifier. buffer (input) Specifies the variable containing the data to be sent. send_length (input) Specifies the length of the data to be sent. The minimum amount of data that can be sent is 1 byte; the maximum is 86 bytes. control_information_received (output) Specifies the variable containing an indication of whether or not control information has been received. The control_information_received variable can have one of the following values: o CM_NO_CONTROL_INFO_RECEIVED Indicates that no control information was received. o CM_REQ_TO_SEND_RECEIVED (half-duplex conversations only) The local program received a request-to-send notification from the remote program. The remote program issued Request_To_Send, requesting the local program's end of the conversation to enter RECEIVE state, which would place the remote program's end of the conversation in SEND state. See the description of the Request_To_Send (CMRTS) call for further discussion of the local program's possible responses. o CM_EXPEDITED_DATA_AVAILABLE Expedited data is available to be received. o CM_RTS_RCVD_AND_EXP_DATA_AVAIL (half-duplex conversations only) The local program received a request-to-send notification from the remote program and expedited data is available to be received. NOTES: 1. If return_code is set to CM_PROGRAM_PARAMETER_CHECK or CM_PROGRAM_STATE_CHECK, the value contained in control_information_received has no meaning. 2. When more than one piece of control information is available to be returned to the program, it will be returned in the following order: o CM_RTS_RCVD_AND_EXP_DATA_AVAIL o CM_REQ_TO_SEND_RECEIVED o CM_EXPEDITED_DATA_AVAILABLE o CM_NO_CONTROL_INFO_RECEIVED return_code (output) Specifies the result of the call execution. The return_code variable can have one of the following values: o CM_OK o CM_CALL_NOT_SUPPORTED o CM_OPERATION_INCOMPLETE o CM_PROGRAM_PARAMETER_CHECK - The conversation_ID specifies an unassigned conversation identifier. - The send_length specifies a value less than 1 or greater than 86. - The conversation is not using an LU 6.2 CRM. o CM_PROGRAM_STATE_CHECK This value indicates that the conversation is in INITIALIZE or INITIALIZE-INCOMING state and is not allowed to send expedited data. o CM_CONVERSATION_ENDING This value indicates that the conversation is ending due to a normal deallocation, an allocation error, a Cancel_Conversation call, a Deallocate call with deallocate_type set to CM_DEALLOCATE_ABEND, or a conversation failure. Hence, no expedited data is sent. o CM_EXP_DATA_NOT_SUPPORTED This value indicates that the remote system does not support expedited data. o CM_OPERATION_NOT_ACCEPTED o CM_PRODUCT_SPECIFIC_ERROR State Changes This call does not cause a state change. Usage Notes 1. A program uses the Send_Expedited_Data call to send data that flows in an expedited fashion, possibly bypassing data sent using the Send_Data call. 2. The Send_Expedited_Data call should be used sparingly and should not be used for sending normal data. 3. When the remote system receives the expedited data, it retains the expedited data until it is received by the partner program using Receive_Expedited_Data. 4. NOTE TO IMPLEMENTERS: A control_information_received notification can be reported on this call (associated with the Expedited-Send queue), on the Receive_Expedited_Data call (associated with the Expedited-Receive queue), on the Send_Data call (associated with the Send queue or the Send-Receive queue), on the Receive call (associated with the Receive queue or the Send-Receive queue), and on the Test_Request_To_Send_Received call (not associated with any queue). When the program uses multiple threads or queue-level non-blocking, more than one of these calls may be executed simultaneously. An implementation should report the CM_EXPEDITED_DATA_AVAILABLE indication to the program through all available calls, until the expedited data is received. All other values of control_information_received should be reported only once. ------------------------- Set_AE_Qualifier (CMSAEQ) Set_AE_Qualifier (CMSAEQ) is used by a program to set the AE_qualifier, AE_qualifier_length, and AE_qualifier_format characteristics for a conversation. Set_AE_Qualifier overrides the current values that were originally acquired from the side information using sym_dest_name. Issuing this call does not change the information in the side information. It only changes the AE_qualifier, the AE_qualifier_length, and the AE_qualifier_format characteristics for this conversation. NOTES: 1. A program cannot issue Set_AE_Qualifier after an Allocate call is issued. Only the program that initiated the conversation (issued the Initialize_Conversation call) can issue Set_AE_Qualifier. 2. The AE_qualifier characteristic is used only by an OSI TP CRM. Format +--------------------------------------------------------------------+ | CALL CMSAEQ(conversation_ID, | | AE_qualifier, | | AE_qualifier_length, | | AE_qualifier_format, | | return_code) | +--------------------------------------------------------------------+ Parameters conversation_ID (input) Specifies the conversation identifier. AE_qualifier (input) Specifies the application-entity-qualifier that distinguishes the application-entity at the application-process where the remote program is located. AE_qualifier_length (input) Specifies the length of AE_qualifier. The length can be from 1 to 1024 bytes. AE_qualifier_format (input) Specifies the format of AE_qualifier. The AE_qualifier_format variable can have one of the following values: o CM_DN Specifies that the AE_qualifier is a distinguished name. o CM_INT_DIGITS Specifies that the AE_qualifier is an integer represented as a sequence of decimal digits. return_code (output) Specifies the result of the call execution. The return_code variable can have one of the following values: o CM_OK o CM_CALL_NOT_SUPPORTED o CM_PROGRAM_PARAMETER_CHECK This value indicates one of the following: - The conversation_ID specifies an unassigned conversation identifier. - The AE_qualifier_length is set to a value less than 1 or greater than 1024. - The AE_qualifier_format specifies an undefined value. - The partner_ID characteristic is set to a non-null value. o CM_PROGRAM_STATE_CHECK This value indicates that the conversation is not in INITIALIZE state. o CM_OPERATION_NOT_ACCEPTED o CM_PRODUCT_SPECIFIC_ERROR State Changes This call does not cause any state changes. Usage Notes 1. Specify AE_qualifier using the local system's native encoding. CPI Communications automatically converts the AE_qualifier from the native encoding where necessary. 2. If a return_code other than CM_OK is returned on the call, the AE_qualifier, the AE_qualifier_length, and the AE_qualifier_format conversation characteristics remain unchanged. 3. The AE_qualifier may be either a distinguished name or an integer represented as a sequence of decimal digits. Distinguished names can have any format and syntax that can be recognized by the local system. Related Information "Side Information" and note 4 of Table 21 provide further discussion of the AE_qualifier conversation characteristic. "Automatic Conversion of Characteristics" provides further information on the automatic conversion of the AE_qualifier parameter. ---------------------------- Set_Allocate_Confirm (CMSAC) Set_Allocate_Confirm (CMSAC) is used by a program to set the allocate_confirm characteristic for a given conversation. Set_Allocate_Confirm overrides the value that was assigned when the Initialize_Conversation call was issued. NOTES: 1. A program cannot issue Set_Allocate_Confirm after an Allocate call is issued. Only the program that initiates the conversation (issues the Initialize_Conversation call) can issue Set_Allocate_Confirm. 2. The allocate_confirm characteristic is used only by an OSI TP CRM. Format +--------------------------------------------------------------------+ | CALL CMSAC(conversation_ID, | | allocate_confirm, | | return_code) | +--------------------------------------------------------------------+ Parameters conversation_ID (input) Specifies the conversation identifier. allocate_confirm (input) Specifies whether the program is to receive notification when the remote program confirms its acceptance of the conversation. The allocate_confirm variable can have one of the following values: o CM_ALLOCATE_NO_CONFIRM Specifies that the program is not to receive notification when the remote program confirms its acceptance of the conversation. o CM_ALLOCATE_CONFIRM Specifies that the program is to receive notification when the remote program confirms its acceptance of the conversation. return_code (output) Specifies the result of the call execution. The return_code variable can have one of the following values: o CM_OK o CM_CALL_NOT_SUPPORTED o CM_PROGRAM_PARAMETER_CHECK This value indicates one of the following: - The conversation_ID specifies an unassigned identifier. - The allocate_confirm specifies an undefined value. - The allocate_confirm specifies CM_ALLOCATE_CONFIRM, and the conversation is using an LU 6.2 CRM. o CM_PROGRAM_STATE_CHECK This value indicates that the conversation is not in INITIALIZE state. o CM_OPERATION_NOT_ACCEPTED o CM_PRODUCT_SPECIFIC_ERROR State Changes This call does not cause any state changes. Usage Notes 1. If a return_code other than CM_OK is returned on the call, the allocate_confirm conversation characteristic remains unchanged. 2. When the remote program confirms its acceptance of the conversation, the initiating program is notified by receiving a control_information_received value of CM_ALLOCATE_CONFIRMED or CM_ALLOCATE_CONFIRMED_WITH_DATA on a subsequent call. 3. After the remote program has accepted the conversation by issuing an Accept_Conversation or Accept_Incoming call, it confirms the acceptance by issuing any call other than a Cancel_Conversation, Deallocate with deallocate_type of CM_DEALLOCATE_ABEND, or Set_* or Extract_* call. The remote program rejects the conversation by issuing a Cancel_Conversation call or a Deallocate call with deallocate_type of CM_DEALLOCATE_ABEND as its first operation on the conversation (other than a Set_* or Extract_* call). 4. The program that initiates the conversation (issues Initialize_Conversation) must set allocate_confirm to CM_ALLOCATE_CONFIRM if it is expecting initialization_data to be returned from the remote program after the remote program confirms its acceptance of the conversation. --------------------- Set_AP_Title (CMSAPT) Set_AP_Title (CMSAPT) is used by a program to set the AP_title, AP_title_length, and AP_title_format characteristics for a conversation. Set_AP_Title overrides the current values that were originally acquired from the side information using sym_dest_name. Issuing this call does not change the values in the side information. It only changes the AP_title, the AP_title_length, and the AP_title_format characteristics for this conversation. NOTES: 1. A program cannot issue Set_AP_Title after an Allocate call is issued. Only the program that initiated the conversation (issued the Initialize_Conversation call) can issue Set_AP_Title. 2. The AP_title characteristic is used only by an OSI TP CRM. Format +--------------------------------------------------------------------+ | CALL CMSAPT(conversation_ID, | | AP_title, | | AP_title_length, | | AP_title_format, | | return_code) | +--------------------------------------------------------------------+ Parameters conversation_ID (input) Specifies the conversation identifier. AP_title (input) Specifies the title of the application-process where the remote program is located. AP_title_length (input) Specifies the length of AP_title. The length can be from 1 to 1024 bytes. AP_title_format (input) Specifies the format of AP_title. The AP_title_format variable can have one of the following values: o CM_DN Specifies that the AP_title is a distinguished name. o CM_OID Specifies that the AP_title is an object identifier. return_code (output) Specifies the result of the call execution. The return_code variable can have one of the following values: o CM_OK o CM_CALL_NOT_SUPPORTED o CM_PROGRAM_PARAMETER_CHECK This value indicates one of the following: - The conversation_ID specifies an unassigned identifier. - The AP_title_length is set to a value less than 1 or greater than 1024. - The AP_title_format specifies an undefined value. - The partner_ID characteristic is set to a non-null value. o CM_PROGRAM_STATE_CHECK This value indicates that the conversation is not in INITIALIZE state. o CM_OPERATION_NOT_ACCEPTED o CM_PRODUCT_SPECIFIC_ERROR State Changes This call does not cause any state changes. Usage Notes 1. Specify AP_title using the local system's native encoding. CPI Communications automatically converts the AP_title from the native encoding where necessary. 2. If a return_code other than CM_OK is returned on the call, the AP_title, the AP_title_length, and the AP_title_format conversation characteristics remain unchanged. 3. The AP_title may be either a distinguished name or an object identifier. Distinguished names can have any format and syntax that can be recognized by the local system. Object identifiers are represented as a series of digits separated by periods (for example, n.nn.n.nnn). Related Information "Side Information" and note 4 of Table 21 provide further discussion of the AP_title conversation characteristic. "Automatic Conversion of Characteristics" provides more information on the automatic conversion of the AP_title parameter. ------------------------------------- Set_Application_Context_Name (CMSACN) Set_Application_Context_Name (CMSACN) is used by a program to set the application_context_name and application_context_name_length characteristics for a conversation. Set_Application_Context_Name overrides the current values that were originally acquired from the side information using sym_dest_name. Issuing this call does not change the values in the side information. It only changes the application_context_name and application_context_name_length characteristics for this conversation. NOTE: The application_context_name characteristic is used only by an OSI TP CRM. Format +--------------------------------------------------------------------+ | CALL CMSACN(conversation_ID, | | application_context_name, | | application_context_name_length, | | return_code) | +--------------------------------------------------------------------+ Parameters conversation_ID (input) Specifies the conversation identifier. application_context_name (input) Specifies the name of the application context to be used on the conversation. The length can be 1-256 bytes. application_context_name_length (input) Specifies the length of the application context name to be used on the conversation startup request. return_code (output) Specifies the result of the call execution. The return_code variable can have one of the following values: o CM_OK o CM_CALL_NOT_SUPPORTED o CM_PROGRAM_STATE_CHECK This value indicates that the conversation is not in the INITIALIZE state. o CM_PROGRAM_PARAMETER_CHECK This value indicates one of the following: - The conversation_ID specifies an unassigned identifier. - The application_context_name_length is set to a value less than 1 or greater than 256. - The partner_ID characteristic is set to a non-null value. o CM_OPERATION_NOT_ACCEPTED o CM_PRODUCT_SPECIFIC_ERROR State Changes This call does not cause any state changes. Usage Notes 1. Specify application_context_name using the local system's native encoding. CPI Communications automatically converts the application_context_name from the native encoding where necessary. 2. If a return_code other than CM_OK is returned on the call, the application_context_name and the application_context_name_length conversation characteristics remain unchanged. 3. The application context name is an object identifier and is represented as a series of digits separated by periods. For example, the application context defined by the Open System Environment Implementers' Workshop (OIW) for UDT with Commit Profiles is represented as "1.3.14.15.5.1.0" and the application context for Application Supported Transactions using UDT is represented as "1.3.14.15.5.2.0". Related Information "Side Information" provides more information on the application_context_name conversation characteristic. "Automatic Conversion of Characteristics" provides further information on the automatic conversion of the application_context_name parameter. ----------------------------- Set_Begin_Transaction (CMSBT) Set_Begin_Transaction (CMSBT) is used by a program to set the begin_transaction characteristic for a given conversation. Set_Begin_Transaction overrides the value that was assigned when the Initialize_Conversation call was issued. NOTE: The begin_transaction characteristic is used only by an OSI TP CRM. Format +--------------------------------------------------------------------+ | CALL CMSBT(conversation_ID, | | begin_transaction, | | return_code) | +--------------------------------------------------------------------+ Parameters conversation_ID (input) Specifies the conversation identifier. begin_transaction (input) Specifies whether the superior, when a new transaction is started, will explicitly or implicitly ask that the subordinate program join the transaction. The begin_transaction variable can have one of the following values: o CM_BEGIN_IMPLICIT Specifies that the superior implicitly asks that the subordinate join the transaction by issuing one of the following calls from INITIALIZE, SEND, SEND-PENDING, or SEND-RECEIVE states. CMALLC -- Allocate CMCFM -- Confirm CMINCL -- Include_Partner_In_Transaction CMPREP -- Prepare CMPTR -- Prepare_To_Receive CMRCV -- Receive CMSEND -- Send_Data CMSERR -- Send_Error o CM_BEGIN_EXPLICIT Specifies that the superior explicitly asks that the subordinate join the transaction by use of the Include_Partner_In_Transaction (CMINCL) call. return_code (output) Specifies the result of the call execution. The return_code variable can have one of the following values: o CM_OK o CM_CALL_NOT_SUPPORTED o CM_PROGRAM_STATE_CHECK This value indicates that the conversation is in INITIALIZE-INCOMING state. o CM_PROGRAM_PARAMETER_CHECK This value indicates one of the following: - The conversation_ID specifies an unassigned identifier. - The begin_transaction specifies an undefined value. - The transaction_control is set to CM_CHAINED_TRANSACTIONS. - The program is not the superior for the conversation. o CM_OPERATION_NOT_ACCEPTED This value indicates that the program has chosen conversation-level non-blocking for the conversation and a previous call operation is still in progress. o CM_PRODUCT_SPECIFIC_ERROR State Changes This call does not cause any state changes. Usage Notes 1. If a return_code other than CM_OK is returned on the call, the begin_transaction conversation characteristic remains unchanged. 2. This call does not apply to any previous call operation still in progress. 3. The remote program receives the request to join the transaction as a status_received indicator of CM_JOIN_TRANSACTION on a Receive call it issues. 4. If the superior is not in transaction when it issues an Allocate, Confirm, Include_Partner_In_Transaction, Prepare, Prepare_To_Receive, Receive, Send_Data, or Send_Error call, the begin_transaction characteristic is ignored, and the subordinate is not asked to join a transaction. 5. The call is not associated with any conversation queue. When a conversation uses queue-level non-blocking, the call does not return CM_OPERATION_NOT_ACCEPTED on the conversation. Related Information "Chained and Unchained Transactions" discusses chained and unchained transactions. "Joining a Transaction" discusses how a program requests the partner program to join a transaction. -------------------------------- Set_Confirmation_Urgency (CMSCU) Set_Confirmation_Urgency (CMSCU) is used by a program to set the confirm_urgency characteristic for a given conversation. Set_Confirmation_Urgency overrides the value that was assigned when the Initialize_Conversation, Accept_Conversation, or Initialize_For_Incoming call was issued. NOTE: The confirmation_urgency characteristic is used only for a half-duplex conversation. Format +--------------------------------------------------------------------+ | CALL CMSCU(conversation_ID, | | confirmation_urgency, | | return_code) | +--------------------------------------------------------------------+ Parameters conversation_ID (input) Specifies the conversation identifier. confirmation_urgency (input) Specifies whether the response to a Prepare_To_Receive call that requests confirmation will be sent immediately. The confirmation_urgency variable can have one of the following values: o CM_CONFIRMATION_NOT_URGENT Specifies that the remote program's response to the confirmation request may not be sent immediately. o CM_CONFIRMATION_URGENT Specifies that the remote program's response to the confirmation request will be sent immediately. return_code (output) Specifies the result of the call execution. The return_code variable can have one of the following values: o CM_OK o CM_CALL_NOT_SUPPORTED o CM_PROGRAM_PARAMETER_CHECK This value indicates one of the following: - The conversation_ID specifies an unassigned identifier. - The confirmation_urgency variable specifies an undefined value. - The send_receive_mode of the conversation is CM_FULL_DUPLEX. - The sync_level is set to CM_NONE or CM_SYNC_POINT_NO_CONFIRM. o CM_OPERATION_NOT_ACCEPTED o CM_PRODUCT_SPECIFIC_ERROR State Changes This call does not cause any state changes. Usage Notes 1. If a return_code other than CM_OK is returned on the call, the confirmation_urgency conversation characteristic remains unchanged. 2. When the local program issues a Prepare_To_Receive call with prepare_to_receive_type set to CM_PREPARE_TO_RECEIVE_CONFIRM or CM_PREPARE_TO_RECEIVE_SYNC_LEVEL with sync_level set to CM_CONFIRM, the remote CRM may optimize link usage by buffering the response generated by the Confirmed call until the remote program issues another call. This may increase the time the local program must wait for control to be returned to it. By issuing a Set_Confirmation_Urgency call with the confirmation_urgency parameter set to CM_CONFIRMATION_URGENT before issuing the Prepare_To_Receive call, the local program can request that the response from the Confirmed call be sent to the local program as soon as it is issued by the remote program. Related Information See "Prepare_To_Receive (CMPTR)" for information on requesting confirmation. ------------------------------------------- Set_Conversation_Security_Password (CMSCSP) Set_Conversation_Security_Password (CMSCSP) is used by a program to set the security_password and security_password_length characteristics for a conversation. Set_Conversation_Security_Password overrides the current values, which were originally acquired from the side information using sym_dest_name. This call does not change the values in the side information. It only changes the security_password and security_password_length characteristics for this conversation. NOTE: A program cannot issue the Set_Conversation_Security_Password call after an Allocate call is issued. Only the program that initiates the conversation (issues the Initialize_Conversation call) can issue Set_Conversation_Security_Password. A program can only specify a password when conversation_security_type is set to CM_SECURITY_PROGRAM or CM_SECURITY_PROGRAM_STRONG. Format +--------------------------------------------------------------------+ | CALL CMSCSP(conversation_ID, | | security_password, | | security_password_length, | | return_code) | +--------------------------------------------------------------------+ Parameters conversation_ID (input) Specifies the conversation identifier. security_password (input) Specifies the password to be included in the conversation startup request. The partner system uses this value and the user ID to validate the user's access to the remote program. The password is stored temporarily by node services, and is erased at the successful completion of an Allocate call. security_password_length (input) Specifies the length of the password. The length can be from 0 to 10 bytes. If zero, the security_password_length characteristic is set to zero (effectively setting the security_password characteristic to the null string), and the security_password parameter on this call is ignored. return_code (output) Specifies the result of the call execution. The return_code variable can have one of the following values: o CM_OK o CM_CALL_NOT_SUPPORTED o CM_PROGRAM_STATE_CHECK This value indicates one of the following: - The conversation is not in INITIALIZE state. - conversation_security_type is not set to CM_SECURITY_PROGRAM or CM_SECURITY_PROGRAM_STRONG. o CM_PROGRAM_PARAMETER_CHECK This value indicates one of the following: - The conversation_ID specifies an unassigned conversation identifier. - The security_password_length is less than 0 or greater than 10. o CM_OPERATION_NOT_ACCEPTED o CM_PRODUCT_SPECIFIC_ERROR State Changes This call does not cause any state changes. Usage Notes 1. When a program issues Set_Conversation_Security_Password, a user ID must also be supplied. The user ID comes from side information or is set by the program issuing Set_Conversation_Security_User_ID. 2. Specify security_password using the local system's native encoding. CPI Communications automatically converts the security_password from the native encoding where necessary. 3. Specification of a password that is not valid is not detected on this call. It is detected by the partner system when it receives the conversation startup request. The partner system returns an error indication to the local system, which reports the error to the program by means of the CM_SECURITY_NOT_VALID return code on a call subsequent to the Allocate call. 4. If a return_code other than CM_OK is returned on the call, the security_password and security_password_length characteristics are unchanged. --------------------------------------- Set_Conversation_Security_Type (CMSCST) Set_Conversation_Security_Type (CMSCST) is used by a program to set the conversation_security_type characteristic for a conversation. Set_Conversation_Security_Type overrides the current value, which was originally acquired from the side information using sym_dest_name. This call does not change the value in the side information. It only changes the conversation_security_type characteristic for this conversation. NOTE: A program cannot issue the Set_Conversation_Security_Type call after an Allocate call is issued. Only the program that initiates the conversation (issues the Initialize_Conversation call) can issue Set_Conversation_Security_Type. Format +--------------------------------------------------------------------+ | CALL CMSCST(conversation_ID, | | conversation_security_type, | | return_code) | +--------------------------------------------------------------------+ Parameters conversation_ID (input) Specifies the conversation identifier. conversation_security_type (input) Specifies the type of access security information to be sent in the conversation startup request to the partner system. The access security information, if present, consists of either a user ID, or a user ID and a password. It is used by the partner system to validate the user's access to the remote program. The conversation_security_type variable can have one of the following values: o CM_SECURITY_NONE No access security information is included in the conversation startup request. o CM_SECURITY_SAME The security parameters maintained by node services for the program's current context when the program issues the Allocate call are used to set the access security information included in the conversation startup request. o CM_SECURITY_PROGRAM The values of the security_user_ID and security_password characteristics are used to set the access security information included in the conversation startup request. o CM_SECURITY_PROGRAM_STRONG The values of the security_user_ID and security_password characteristics are used to set the access security information included in the conversation startup request. The local CRM ensures that the security_password is not exposed in clear-text form on the physical network. If the local CRM cannot ensure this, then the subsequent Allocate request will fail with a return_code of CM_SECURITY_NOT_SUPPORTED. o CM_SECURITY_DISTRIBUTED The security parameters for the program's current context are used to generate authentication tokens using a distributed security service. The tokens are used as the access security information included in the conversation startup request. If the remote system does not accept the type of tokens generated by the local system, then the request fails locally. A locally failed request does not send any data to the remote system. o CM_SECURITY_MUTUAL The security parameters for the program's current context are used to generate authentication tokens using a distributed security service. The tokens are used as the access security information included in the conversation startup request. Furthermore, the local CRM is requested to authenticate the partner principal before any user information is transmitted to the remote CRM. return_code (output) Specifies the result of the call execution. The return_code variable can have one of the following values: o CM_OK o CM_CALL_NOT_SUPPORTED o CM_PROGRAM_STATE_CHECK This value indicates that the conversation is not in INITIALIZE state. o CM_PARM_VALUE_NOT_SUPPORTED This value indicates that the conversation_security_type specifies CM_SECURITY_PROGRAM, CM_SECURITY_PROGRAM_STRONG, CM_SECURITY_DISTRIBUTED, or CM_SECURITY_MUTUAL and the value is not supported by the local system. o CM_PROGRAM_PARAMETER_CHECK This return code indicates one of the following: - The conversation_ID specifies an unassigned conversation identifier. - The conversation_security_type specifies an undefined value. o CM_OPERATION_NOT_ACCEPTED o CM_PRODUCT_SPECIFIC_ERROR State Changes This call does not cause any state changes. Usage Notes 1. A conversation_security_type of CM_SECURITY_SAME is intended for use between nodes which have the same set of user IDs and which accept user validation performed on one node as verifying the user for all nodes. A password is not used in this case. 2. A conversation_security_type of CM_SECURITY_PROGRAM or CM_SECURITY_PROGRAM_STRONG requires that a user ID and password be supplied for inclusion in the conversation startup request. These may come from side information or be set by the program using the Set_Conversation_Security_User_ID and Set_Conversation_Security_Password calls. 3. If a return_code other than CM_OK is returned on the call, the conversation_security_type is unchanged. 4. A conversation_security_type of CM_SECURITY_MUTUAL is intended for usage when the local program wants the local CRM to authenticate that the remote program or CRM is actually the partner principal specified in the program binding. 5. Certain combinations of conversation_security_type value and required_user_name_type value (from the program binding) causes the local CRM to reject an Allocate request with a return_code value of CM_SECURITY_NOT_SUPPORTED. The incompatible combinations are shown in Table 11. 6. For an OSI TP CRM, the type of access security information sent for CM_SECURITY_SAME is implementation defined. ------------------------------------------ Set_Conversation_Security_User_ID (CMSCSU) Set_Conversation_Security_User_ID (CMSCSU) is used by a program to set the security_user_ID and security_user_ID_length characteristics for a conversation. Set_Conversation_Security_User_ID overrides the current values, which were originally acquired from the side information using sym_dest_name. This call does not change the values in the side information. It only changes the security_user_ID and security_user_ID_length characteristics for this conversation. NOTE: A program cannot issue the Set_Conversation_Security_User_ID call after an Allocate call is issued. Only the program that initiates the conversation (issues the Initialize_Conversation call) can issue Set_Conversation_Security_User_ID. A program can only specify an access security user ID when conversation_security_type is set to CM_SECURITY_PROGRAM or CM_SECURITY_PROGRAM_STRONG. Format +--------------------------------------------------------------------+ | CALL CMSCSU(conversation_ID, | | security_user_ID, | | security_user_ID_length, | | return_code) | +--------------------------------------------------------------------+ Parameters conversation_ID (input) Specifies the conversation identifier. security_user_ID (input) Specifies the user ID to be included in the conversation startup request. The partner system uses this value and the password to validate the user's access to the remote program. In addition, the partner system may use the user ID for auditing or accounting purposes. security_user_ID_length (input) Specifies the length of the user ID. The length can be from 0 to 10 bytes. If zero, the security_password_length characteristic is set to zero (effectively setting the security_password characteristic to the null string), and the security_password parameter on this call is ignored. return_code (output) Specifies the result of the call execution. The return_code variable can have one of the following values: o CM_OK o CM_CALL_NOT_SUPPORTED o CM_PROGRAM_STATE_CHECK This value indicates one of the following: - The conversation is not in INITIALIZE state. - The conversation_security_type is not set to CM_SECURITY_PROGRAM or CM_SECURITY_PROGRAM_STRONG. o CM_PROGRAM_PARAMETER_CHECK This return code indicates one of the following: - The conversation_ID specifies an unassigned conversation identifier. - The security_user_ID_length is less than 0 or greater than 10. o CM_OPERATION_NOT_ACCEPTED o CM_PRODUCT_SPECIFIC_ERROR State Changes This call does not cause any state changes. Usage Notes 1. When a program issues Set_Conversation_Security_User_ID, a password must also be supplied. The password comes from side information or is set by the program using Set_Conversation_Security_Password. 2. Specify security_user_ID using the local system's native encoding. CPI Communications automatically converts the security_user_ID from the native encoding where necessary. 3. Specification of a security user ID that is not valid is not detected on this call. It is detected by the partner system when it receives the conversation startup request. The partner system returns an error indication to the local system, which reports the error to the program by means of the CM_SECURITY_NOT_VALID return code on a call subsequent to the Allocate call. 4. If a return_code other than CM_OK is returned on the call, the security_user_ID and security_user_ID_length characteristics are unchanged. ----------------------------- Set_Conversation_Type (CMSCT) Set_Conversation_Type (CMSCT) is used by a program to set the conversation_type characteristic for a given conversation. It overrides the value that was assigned when the Initialize_Conversation or Initialize_For_Incoming call was issued. NOTES: 1. A program cannot use Set_Conversation_Type after an Allocate has been issued. Only the program that initiates the conversation (using the Initialize_Conversation call) can issue the Set_Conversation_Type call. 2. When using an LU 6.2 CRM, only the program that initiates the conversation (using the Initialize_Conversation call) can issue the Set_Conversation_Type call, and it must be issued before the Allocate is issued. When using an OSI TP CRM, because the mapped/basic indication is not carried by the protocol, the recipient of the conversation request must use Initialize_For_Incoming and Set_Conversation_Type to override the conversation_type default of CM_MAPPED_CONVERSATION. The recipient must issue these calls before the Accept_Incoming call is issued. Format +--------------------------------------------------------------------+ | CALL CMSCT(conversation_ID, | | conversation_type, | | return_code) | +--------------------------------------------------------------------+ Parameters conversation_ID (input) Specifies the conversation identifier. conversation_type (input) Specifies the type of conversation to be allocated when Allocate is issued. The conversation_type variable can have one of the following values: o CM_BASIC_CONVERSATION Specifies the allocation of a basic conversation. o CM_MAPPED_CONVERSATION Specifies the allocation of a mapped conversation. return_code (output) Specifies the result of the call execution. The return_code variable can have one of the following values: o CM_OK o CM_PROGRAM_STATE_CHECK This value indicates that the conversation is not in INITIALIZE or INITIALIZE-INCOMING state. o CM_PROGRAM_PARAMETER_CHECK This value indicates one of the following: - The conversation_ID specifies an unassigned conversation identifier. - The conversation_type specifies an undefined value. - The conversation_type is set to CM_MAPPED_CONVERSATION, but fill is set to CM_FILL_BUFFER. - The conversation_type is set to CM_MAPPED_CONVERSATION, but a prior call to Set_Log_Data is still in effect. o CM_OPERATION_NOT_ACCEPTED o CM_PRODUCT_SPECIFIC_ERROR State Changes This call does not cause a state change. Usage Notes 1. Because of the detailed manipulation of the data and resulting complexity of error conditions, the use of basic conversations should be regarded as an advanced programming technique. 2. If a return_code other than CM_OK is returned on the call, the conversation_type conversation characteristic is unchanged. --------------------------- Set_Deallocate_Type (CMSDT) Set_Deallocate_Type (CMSDT) is used by a program to set the deallocate_type characteristic for a given conversation. Set_Deallocate_Type overrides the value that was assigned when the Initialize_Conversation, Accept_Conversation, or Initialize_For_Incoming call was issued. Format +--------------------------------------------------------------------+ | CALL CMSDT(conversation_ID, | | deallocate_type, | | return_code) | +--------------------------------------------------------------------+ Parameters conversation_ID (input) Specifies the conversation identifier. deallocate_type (input) Specifies the type of deallocation to be performed. The deallocate_type variable can have one of the following values: o CM_DEALLOCATE_SYNC_LEVEL Perform deallocation based on the sync_level characteristic in effect for this conversation: - If sync_level is set to CM_NONE, or if sync_level is set to CM_SYNC_POINT_NO_CONFIRM but the conversation is not currently included in a transaction, execute the function of the Flush call and deallocate the conversation normally. - For half-duplex conversations, if sync_level is set to CM_CONFIRM, or if sync_level is set to CM_SYNC_POINT but the conversation is not currently included in a transaction, execute the function of the Confirm call. If the Confirm call is successful (as indicated by a return code of CM_OK on the Deallocate call or a return code of CM_OK on the Send_Data call with send_type set to CM_SEND_AND_DEALLOCATE), deallocate the conversation normally. If the Confirm call is not successful, the state of the conversation is determined by the return code. - If sync_level is set to CM_SYNC_POINT or CM_SYNC_POINT_NO_CONFIRM and the conversation is included in a transaction, defer the deallocation until the program issues a resource recovery commit call. If the commit call is successful, the conversation is deallocated normally. If the commit is not successful or if the program issues a resource recovery backout call instead of a commit, the conversation is not deallocated. See the description of the Deallocate (CMDEAL) call for more information about deallocating conversations with sync_level set to CM_SYNC_POINT or CM_SYNC_POINT_NO_CONFIRM. o CM_DEALLOCATE_FLUSH Execute the function of the Flush call and deallocate the conversation normally. o CM_DEALLOCATE_CONFIRM Execute the function of the Confirm call. If the Confirm call is successful (as indicated by a return code of CM_OK on the Deallocate call or a return code of CM_OK on the Send_Data call with send_type set to CM_SEND_AND_DEALLOCATE), deallocate the conversation normally. If the Confirm call is not successful, the state of the conversation is determined by the return code. o CM_DEALLOCATE_ABEND For half-duplex conversations, execute the function of the Flush call when the conversation is in SEND state and deallocate the conversation abnormally. Data purging can occur when the conversation is in RECEIVE state. If the conversation is a basic conversation, logical-record truncation can occur when the conversation is in SEND state. For full-duplex conversations, execute the function of the Flush call when the conversation is in SEND-RECEIVE or SEND-ONLY state and deallocate the conversation abnormally. Data purging can occur when the conversation is in SEND-RECEIVE or RECEIVE-ONLY state. If the conversation is basic, logical-record truncation can occur when the conversation is in SEND-RECEIVE or SEND-ONLY state. return_code (output) Specifies the result of the call execution. The return_code variable can have one of the following values: o CM_OK o CM_PROGRAM_PARAMETER_CHECK This value indicates one of the following: - The conversation_ID specifies an unassigned conversation identifier. - The deallocate_type specifies an undefined value. - The deallocate_type is set to CM_DEALLOCATE_FLUSH, sync_level is set to CM_SYNC_POINT or CM_SYNC_POINT_NO_CONFIRM, and transaction_control is set to CM_CHAINED_TRANSACTIONS. - The conversation is using an LU 6.2 CRM, deallocate_type is set to CM_DEALLOCATE_CONFIRM, and sync_level is set to CM_NONE, CM_SYNC_POINT, or CM_SYNC_POINT_NO_CONFIRM. - The converation is using an OSI TP CRM, deallocate_type is set to CM_DEALLOCATE_CONFIRM, sync_level is set to CM_SYNC_POINT or CM_SYNC_POINT_NO_CONFIRM, and transaction_control is set to CM_CHAINED_TRANSACTIONS. o CM_PROGRAM_STATE_CHECK The conversation is in INITIALIZE-INCOMING state. o CM_OPERATION_NOT_ACCEPTED o CM_PRODUCT_SPECIFIC_ERROR State Changes This call does not cause a state change. Usage Notes 1. A deallocate_type set to CM_DEALLOCATE_SYNC_LEVEL is used by a program to deallocate a conversation based on the conversation's synchronization level. o For half-duplex conversations: - If sync_level is set to CM_NONE, or if sync_level is set to CM_SYNC_POINT_NO_CONFIRM but the conversation is not currently included in a transaction, the conversation is unconditionally deallocated. - If sync_level is set to CM_CONFIRM, or if sync_level is set to CM_SYNC_POINT but the conversation is not currently included in a transaction, the conversation is deallocated when the remote program responds to the confirmation request by issuing the Confirmed call. The conversation remains allocated when the remote program responds to the confirmation request by issuing the Send_Error call. - If sync_level is set to CM_SYNC_POINT or CM_SYNC_POINT_NO_CONFIRM and the conversation is included in a transaction, the deallocation is deferred until the program issues a resource recovery commit call. If the commit call is successful, the conversation is deallocated normally. If the commit is not successful or if the program issues a resource recovery backout call instead of a commit, the conversation is not deallocated. o For full-duplex conversations: - If sync_level is set to CM_NONE, or if sync_level is set to CM_SYNC_POINT_NO_CONFIRM but the conversation is not currently included in a transaction, and the Deallocate call is issued in SEND-RECEIVE state, the program can no longer issue calls associated with the Send queue, but it can continue to issue calls associated with the other conversation queues. If the Deallocate call is issued in SEND-ONLY state, the conversation is deallocated. - If sync_level is set to CM_SYNC_POINT_NO_CONFIRM and the conversation is included in a transaction, the deallocation is deferred until the program issues a resource recovery commit call. If the commit call is successful, the conversation is deallocated normally. If the commit is not successful or if the program issues a backout call instead of a commit, the conversation is not deallocated. 2. A deallocate_type set to CM_DEALLOCATE_FLUSH is used by a program to unconditionally deallocate the conversation. This deallocate_type value can be used for conversations with sync_level set to CM_NONE or CM_CONFIRM. If the conversation is using an OSI TP CRM, it can also be used for conversations with sync_level set to CM_SYNC_POINT or CM_SYNC_POINT_NO_CONFIRM if the conversation is not currently included in a transaction. The deallocate_type set to CM_DEALLOCATE_FLUSH is functionally equivalent to deallocate_type set to CM_DEALLOCATE_SYNC_LEVEL combined with a sync_level set to CM_NONE. For a half-duplex conversation, the conversation is deallocated. For a full-duplex conversation, the program can no longer issue calls associated with the Send queue, and the conversation is deallocated if the Deallocate call is issued in SEND-ONLY state. This deallocate_type value can be used for conversations with sync_level set to CM_NONE. 3. A deallocate_type set to CM_DEALLOCATE_CONFIRM is used by a program to conditionally deallocate the conversation, depending on the remote program's response, when the sync_level is set to CM_CONFIRM. The deallocate_type set to CM_DEALLOCATE_CONFIRM is functionally equivalent to deallocate_type set to CM_DEALLOCATE_SYNC_LEVEL combined with a sync_level set to CM_CONFIRM. The conversation is deallocated when the remote program responds to the confirmation request by issuing Confirmed. The conversation remains allocated when the remote program responds to the confirmation request by issuing Send_Error. 4. A deallocate_type set to CM_DEALLOCATE_ABEND is used by a program to unconditionally deallocate a conversation regardless of its synchronization level and its current state. Specifically, this deallocate_type value is used when the program detects an error condition that prevents further useful communications (communications that would lead to successful completion of the transaction). 5. If a return_code other than CM_OK is returned on the call, the deallocate_type conversation characteristic is unchanged. --------------------------- Set_Error_Direction (CMSED) Set_Error_Direction (CMSED) is used by a program to set the error_direction characteristic for a given conversation. Set_Error_Direction overrides the value that was assigned when the Initialize_Conversation, the Accept_Conversation, or the Initialize_For_Incoming call was issued. NOTE: The error_direction characteristic is used by an LU 6.2 CRM and only for a half-duplex conversation. Format +--------------------------------------------------------------------+ | CALL CMSED(conversation_ID, | | error_direction, | | return_code) | +--------------------------------------------------------------------+ Parameters conversation_ID (input) Specifies the conversation identifier. error_direction (input) Specifies the direction of the data flow in which the program detected an error. This parameter is significant only if Send_Error is issued in SEND-PENDING state (that is, immediately after a Receive on which both data and a conversation status of CM_SEND_RECEIVED are received). Otherwise, the error_direction value is ignored when the program issues Send_Error. The error_direction variable can have one of the following values: o CM_RECEIVE_ERROR Specifies that the program detected an error in the data it received from the remote program. o CM_SEND_ERROR Specifies that the program detected an error while preparing to send data to the remote program. return_code (output) Specifies the result of the call execution. The return_code variable can have one of the following values: o CM_OK o CM_CALL_NOT_SUPPORTED o CM_PROGRAM_PARAMETER_CHECK This value indicates one of the following: - The conversation_ID specifies an unassigned conversation identifier. - The error_direction specifies CM_SEND_ERROR and the conversation is using an OSI TP CRM. - The error_direction specifies an undefined value. - The send_receive_mode of the conversation is CM_FULL_DUPLEX. o CM_OPERATION_NOT_ACCEPTED o CM_PRODUCT_SPECIFIC_ERROR State Changes This call does not cause a state change. Usage Notes 1. The error_direction conversation characteristic is significant only if Send_Error is issued immediately after a Receive on which both data and a conversation status of CM_SEND_RECEIVED are received (when the conversation is in SEND-PENDING state). In this situation, the Send_Error may result from one of the following errors: o An error in the received data (in the receive flow) o An error having nothing to do with the received data, but instead being the result of processing performed by the program after it had successfully received and processed the data (in the send flow). Because the system in this situation cannot tell which error occurred, the program has to supply the error_direction information. The error_direction defaults to a value of CM_RECEIVE_ERROR. To override the default, a program can issue the Set_Error_Direction call prior to issuing Send_Error. Once changed, the new error_direction value remains in effect until the program changes it again. Therefore, a program should issue Set_Error_Direction before issuing Send_Error for a conversation in SEND-PENDING state. If the conversation is not in SEND-PENDING state, the error_direction characteristic is ignored. 2. If the conversation is in SEND-PENDING state and the program issues a Send_Error call, CPI Communications examines the error_direction characteristic and notifies the partner program accordingly: o If error_direction is set to CM_RECEIVE_ERROR, the partner program receives a return_code of CM_PROGRAM_ERROR_PURGING. This indicates that an error at the remote program occurred in the data before the remote program received send control. o If error_direction is set to CM_SEND_ERROR, the partner program receives a return_code of CM_PROGRAM_ERROR_NO_TRUNC. This indicates that an error at the remote program occurred in the send processing after the remote program received send control. 3. If a return_code other than CM_OK is returned on the call, the error_direction conversation characteristic is unchanged. --------------- Set_Fill (CMSF) Set_Fill (CMSF) is used by a program to set the fill characteristic for a given conversation. Set_Fill overrides the value that was assigned when the Initialize_Conversation, Accept_Conversation, or Initialize_For_Incoming call was issued. NOTE: This call applies only to basic conversations. The fill characteristic is ignored for mapped conversations. Format +--------------------------------------------------------------------+ | CALL CMSF(conversation_ID, | | fill, | | return_code) | +--------------------------------------------------------------------+ Parameters conversation_ID (input) Specifies the conversation identifier. fill (input) Specifies whether the program is to receive data in terms of the logical-record format of the data. The fill variable can have one of the following values: o CM_FILL_LL Specifies that the program is to receive one complete or truncated logical record, or a portion of the logical record that is equal to the length specified by the requested_length parameter of the Receive call. o CM_FILL_BUFFER Specifies that the program is to receive data independent of its logical-record format. The amount of data received will be equal to or less than the length specified by the requested_length parameter of the Receive call. The amount is less than the requested length when the program receives the end of the data. return_code (output) Specifies the result of the call execution. The return_code variable can have one of the following values: o CM_OK o CM_PROGRAM_PARAMETER_CHECK This value indicates one of the following: - The conversation_ID specifies an unassigned conversation identifier. - The conversation_type specifies CM_MAPPED_CONVERSATION. - The fill specifies an undefined value. o CM_OPERATION_NOT_ACCEPTED o CM_PRODUCT_SPECIFIC_ERROR State Changes This call does not cause a state change. Usage Notes 1. The fill value provided (for a basic conversation) is used on all subsequent Receive calls for the specified conversation until changed by the program with another Set_Fill call. 2. If a return_code other than CM_OK is returned on the call, the fill conversation characteristic is unchanged. ------------------------------- Set_Initialization_Data (CMSID) Set_Initialization_Data (CMSID) is used by a program to set the initialization_data and initialization_data_length conversation characteristics to be sent to the remote program for a given conversation. Set_Initialization_Data overrides the values that were assigned when the Initialize_Conversation, Accept_Conversation, Initialize_For_Incoming, or Accept_Incoming call was issued. Format +--------------------------------------------------------------------+ | CALL CMSID(conversation_ID, | | initialization_data, | | initialization_data_length, | | return_code) | +--------------------------------------------------------------------+ Parameters conversation_ID (input) Specifies the conversation identifier. initialization_data (input) Specifies the initialization data that is to be passed to the remote program during conversation startup. initialization_data_length (input) Specifies the length of the initialization data. The length can be from 0 to 10000 bytes. If zero, the initialization_data parameter is ignored. return_code (output) Specifies the result of the call execution. The return_code variable can have one of the following values: o CM_OK o CM_CALL_NOT_SUPPORTED o CM_PROGRAM_STATE_CHECK This value indicates one of the following: - The conversation is not in INITIALIZE state, RECEIVE state (for a half-duplex conversation), or SEND-RECEIVE state (for a full-duplex conversation). o CM_PROGRAM_PARAMETER_CHECK This value indicates one of the following: - The conversation_ID specifies an unassigned identifier. - The initialization_data_length specifies a value greater than 10000 or less than zero. o CM_OPERATION_NOT_ACCEPTED o CM_PRODUCT_SPECIFIC_ERROR State Changes This call does not cause any state changes. Usage Notes 1. Initialization data is data that the program initiating a conversation (using the Initialize_Conversation call) can choose to send to the remote program. The initiator issues a Set_Initialization_Data call between the Initialize_Conversation and Allocate calls to specify the initialization data to be sent by the Allocate call. Following the successful completion of either an Accept_Conversation or Accept_Incoming call, the remote program issues an Extract_Initialization_Data call to extract the initialization data. 2. When the conversation is allocated using an OSI TP CRM, the remote program may issue a Set_Initialization_Data call to identify data that is to be sent to the initiating program on its next call following its acceptance of the conversation. To avoid overwriting initialization data from the initiating program, the recipient must issue the Extract_Initialization_Data call to extract the incoming initialization data before issuing the Set_Initialization_Data call. The Set_Initialization_Data must be issued before any other call on the conversation, except Set_* or Extract_* calls. To extract the data from the remote program, the initiating program issues the Extract_Initialization_Data call after receiving a control_information_received value of CM_ALLOCATE_CONFIRMED_WITH_DATA or CM_ALLOCATE_REJECTED_WITH_DATA. 3. If a return_code other than CM_OK is returned on the call, the initialization_data and initialization_data_length conversation characteristics remain unchanged. Related Information "Extract_Initialization_Data (CMEID)" describes the Extract_Initialization_Data call. -------------------- Set_Log_Data (CMSLD) Set_Log_Data (CMSLD) is used by a program to set the log_data and log_data_length characteristics for a given conversation. Set_Log_Data overrides the values that were assigned when the Initialize_Conversation, Accept_Conversation, or Initialize_For_Incoming call was issued. NOTE: When an LU 6.2 CRM is being used, the log_data characteristic is used only on basic conversations. Format +--------------------------------------------------------------------+ | CALL CMSLD(conversation_ID, | | log_data, | | log_data_length, | | return_code) | +--------------------------------------------------------------------+ Parameters conversation_ID (input) Specifies the conversation identifier. log_data (input) Specifies the program-unique error information that is to be logged. The data supplied by the program is any data the program wants to have logged. log_data_length (input) Specifies the length of the program-unique error information. The length can be from 0 to 512 bytes. If zero, the log_data_length characteristic is set to zero (effectively setting the log_data characteristic to the null string), and the log_data parameter on this call is ignored. return_code (output) Specifies the result of the call execution. The return_code variable can have one of the following values: o CM_OK o CM_PROGRAM_PARAMETER_CHECK This value can be one of the following: - The conversation_ID specifies an unassigned conversation identifier. - The conversation_type is set to CM_MAPPED_CONVERSATION and the conversation is using an LU 6.2 CRM. - The log_data_length specifies a value less than 0 or greater than 512. o CM_OPERATION_NOT_ACCEPTED o CM_PRODUCT_SPECIFIC_ERROR State Changes This call does not cause a state change. Usage Notes 1. If the log_data characteristic contains data (as a result of a Set_Log_Data call), log data will be sent to the remote system under any of the following conditions: o When the local program issues a Send_Error call and the conversation is using an LU 6.2 CRM o When the local program issues a Deallocate call with deallocate_type set to CM_DEALLOCATE_ABEND o When the local program issues a Send_Data call with send_type set to CM_SEND_AND_DEALLOCATE and deallocate_type set to CM_DEALLOCATE_ABEND 2. The system resets the log_data and log_data_length characteristics to their initial (null) values after sending the log data. Therefore, the log_data is sent to the remote system only once even though an error indication may be issued several times. See usage note 1 for conditions when log data is sent. 3. Specify log_data using the local system's native encoding. When the log data is displayed on the partner system, it will be displayed in that system's native encoding. 4. If a return_code other than CM_OK is returned on the call, the log_data and log_data_length conversation characteristics are unchanged. --------------------- Set_Mode_Name (CMSMN) Set_Mode_Name (CMSMN) is used by a program to set the mode_name and mode_name_length characteristics for a conversation. Set_Mode_Name overrides the current values that were originally acquired from the side information using the sym_dest_name. Issuing this call does not change the values in the side information. It only changes the mode_name and mode_name_length characteristics for this conversation. NOTE: A program cannot issue the Set_Mode_Name call after an Allocate is issued. Only the program that initiates the conversation (using the Initialize_Conversation call) can issue this call. Format +--------------------------------------------------------------------+ | CALL CMSMN(conversation_ID, | | mode_name, | | mode_name_length, | | return_code) | +--------------------------------------------------------------------+ Parameters conversation_ID (input) Specifies the conversation identifier. mode_name (input) Specifies the mode name designating the network properties for the logical connection to be allocated for the conversation. The network properties include, for example, the class of service to be used, and whether data is to be enciphered. NOTE: A program may require special authority to specify some mode names. For example, SNASVCMG requires special authority with LU 6.2. mode_name_length (input) Specifies the length of the mode name. The length can be from zero to eight bytes. If zero, the mode name for this conversation is set to null and the mode_name parameter included with this call is not significant. return_code (output) Specifies the result of the call execution. The return_code variable can have one of the following values: o CM_OK o CM_PROGRAM_STATE_CHECK This value indicates that the conversation is not in INITIALIZE state. o CM_PROGRAM_PARAMETER_CHECK This value indicates one of the following: - The conversation_ID specifies an unassigned conversation identifier. - The mode_name_length specifies a value less than zero or greater than eight. - The partner_ID characteristic is set to a non-null value. o CM_OPERATION_NOT_ACCEPTED o CM_PRODUCT_SPECIFIC_ERROR State Changes This call does not cause a state change. Usage Notes 1. Specification of a mode name that is not recognized by the system is not detected on this call. It is detected on the subsequent Allocate call. 2. Specify mode_name using the local system's native encoding. CPI Communications automatically converts the mode_name from the native encoding where necessary. 3. If a return_code other than CM_OK is returned on the call, the mode_name and mode_name_length conversation characteristics are unchanged. ----------------------- Set_Partner_ID (CMSPID) Programs use the Set_Partner_ID call to specify a partner_ID characteristic that will be used to allocate the conversation. Set_Partner_ID overrides the current values for the partner_ID, partner_ID_length, partner_ID_type, and partner_ID_scope characteristics that were originally acquired from the side information using the sym_dest_name. Issuing this call does not change the information in the side information. It only changes the partner_ID, partner_ID_length, partner_ID_type, and partner_ID_scope characteristics for this conversation. Format +--------------------------------------------------------------------+ | | | CALL CMSPID(conversation_ID, | | partner_ID_type, | | partner_ID, | | partner_ID_length, | | partner_ID_scope, | | directory_syntax, | | directory_encoding, | | return_code) | +--------------------------------------------------------------------+ Parameters conversation_ID (input) Specifies the conversation ID. partner_ID_type (input) Specifies the type of the partner_ID that will be used on this conversation. The partner_ID_type variable can have one of the following values: o CM_DISTINGUISHED_NAME The partner_ID variable contains a complete distinguished name CPI Communications can use to retrieve destination information from a distributed directory. o CM_LOCAL_DISTINGUISHED_NAME The partner_ID variable contains a local distinguished name. When combined with a system-specific prefix, the local DN creates a complete DN for access of destination information from a distributed directory. o CM_PROGRAM_FUNCTION_ID The partner_ID variable contains a program function identifier that CPI Communications can use to search the distributed directory and obtain the partner binding. o CM_OSI_TPSU_TITLE_OID The partner_ID variable contains an object identifier for an OSI TPSU title. On systems supporting attribute_type searches, CPI Communications will search the directory for objects containing attributes with an attribute_type of TPSU_ENTRY and an attribute_value equal to the specified partner_ID. o CM_PROGRAM_BINDING The partner_ID variable contains a program binding for the partner program. For more information on the format of a program binding, see "Program Binding" on page 1. partner_ID (input) Specifies the partner_ID to be used in allocating the conversation. partner_ID_length (input) Specifies the length of the partner_ID. The length can be from 0 to 32767 bytes. If the partner_ID_length is zero (effectively setting the partner_ID characteristic to the null string), the partner_ID parameter on this call is ignored. partner_ID_scope (input) Specifies the scope of the search in the use of the partner_ID. The partner_ID_scope variable only has meaning when the partner_ID is of type CM_DISTINGUISHED_NAME. It can have one of the following values: o CM_EXPLICIT CPI Communications should only use the destination information contained in the program installation object identified by the distinguished name. o CM_REFERENCE CPI Communications should access the program binding contained in the program installation object identified by the distinguished name. If CPI Communications is unable to establish a logical connection with the partner CRM using this binding, CPI Communications should use the PFID contained in the program installation object (if available) to search for and attempt to use other program installation objects. directory_syntax (input) Specifies the syntax of the distributed directory that CPI Communications will access with the partner_ID. This parameter is ignored if the partner_ID_type is CM_PROGRAM_BINDING. directory_syntax can have one of the following values: o CM_DEFAULT_SYNTAX The DN or PFID specified can be used with a directory conforming to the default directory syntax for the implementation. o CM_DCE_SYNTAX The DN or PFID specified can be used with a directory conforming to DCE directory syntax guidelines. o CM_XDS_SYNTAX The DN or PFID specified can be used with a directory conforming to XDS directory syntax guidelines. o CM_NDS_SYNTAX The DN or PFID specified can be used with a directory conforming to Novell's NDS directory syntax guidelines. directory_encoding (input) Specifies the encoding rule of the distributed directory that CPI Communications will access with the partner_ID. This parameter is ignored if the partner_ID_type is CM_PROGRAM_BINDING. directory_encoding can have one of the following values: o CM_DEFAULT_ENCODING The DN or PFID specified is encoded in 8-bit locally-defined format. o CM_UNICODE_ENCODING The DN or PFID specified is encoded in 16-bit unicode format. return_code (output) Specifies the result of the call execution. The return_code variable can have one of the following values: o CM_OK o CM_CALL_NOT_SUPPORTED o CM_PROGRAM_STATE_CHECK This value indicates that the conversation is not in INITIALIZE state. o CM_PROGRAM_PARAMETER_CHECK This value indicates one of the following: - The conversation_ID specifies an unassigned conversation identifier. - The partner_ID_type parameter specifies an undefined value. - The partner_ID_scope parameter specifies an undefined value. - The partner_ID_type parameter specifies CM_PROGRAM_BINDING and the partner_ID_length parameter specifies a value less than 0 or greater than 32767. - The partner_ID_type parameter specifies CM_DISTINGUISHED_NAME or CM_PROGRAM_FUNCTION_ID and the partner_ID_length parameter specifies a value less than 0 or greater than 1024. - The directory_syntax parameter specifies an undefined value. - The directory_encoding parameter specifies an undefined value. o CM_OPERATION_NOT_ACCEPTED o CM_PRODUCT_SPECIFIC_ERROR State Changes This program does not cause a state change. Usage Notes 1. If the partner_ID variable is not null, it is used by CPI Communications to allocate the conversation. Any other destination information (specified in side information or using Set calls) is ignored. 2. If the partner_ID characteristic is null, the partner_ID characteristic will not be used to allocate the conversation. Instead, CPI Communications will use any destination information provided by side information or Set calls. 3. If a return_code other than CM_OK is returned on the call, the characteristics for the conversation are unchanged. 4. If the program sets partner_ID_type to CM_PROGRAM_FUNCTION_ID, the partner_ID parameter will be used as a PFID to search the distributed directory. CPI Communications uses the PFID in conjunction with a default DN. The specification of a default DN is system-specific and its use depends on the contents of the directory object pointed to: o If the default DN points to one of the directory objects defined in Appendix H, "CPI Communications Extensions for Use with DCE Directory," CPI Communications will use the contents of the object to direct its search. See "Scenarios for Use of CNSI" on page 3 for examples. o If the default DN does not point to a directory object recognized by CPI Communications, the default DN will be used as a starting point for a search of the directory tree for objects containing a PFID with a value equal to the value specified in partner_ID. 5. NOTE TO IMPLEMENTERS: As a performance aid, implementations may begin concurrent access of the directory after the program provides a partner_ID (either via side information or the Set_Partner_ID call) but before the program issues an Allocate call. This optimization does not affect the Set_Partner_ID call (it does not block) and the program will be unable to extract any retrieved directory information until after the Allocate. An Extract_Partner_ID call issued before the Allocate will only return the partner_ID information set by the program. Related Information "Distributed Directory" on page 1 explains the terms and concepts required for use of a distributed directory. "Example 3: Using the Distributed Directory to Locate the Partner Program" on page 1 provides a sample scenario of a program using the Set_Partner_ID call. "Extract_Partner_ID (CMEPID)" on page 1 can be used to extract the partner_ID characteristic. "Program Binding" on page 1 describes the format of a program binding. ---------------------------- Set_Partner_LU_Name (CMSPLN) Set_Partner_LU_Name (CMSPLN) is used by a program to set the partner_LU_name and partner_LU_name_length characteristics for a conversation. Set_Partner_LU_Name overrides the current values that were originally acquired from the side information using the sym_dest_name. Issuing this call does not change the information in the side information. It only changes the partner_LU_name and partner_LU_name_length characteristics for this conversation. NOTES: 1. A program cannot issue Set_Partner_LU_Name after an Allocate call is issued. Only the program that initiated the conversation (issued the Initialize_Conversation call) can issue Set_Partner_LU_Name. 2. The partner_LU_name characteristic is used only by an LU 6.2 CRM. Format +--------------------------------------------------------------------+ | CALL CMSPLN(conversation_ID, | | partner_LU_name, | | partner_LU_name_length, | | return_code) | +--------------------------------------------------------------------+ Parameters conversation_ID (input) Specifies the conversation identifier. partner_LU_name (input) Specifies the name of the remote LU at which the remote program is located. This LU name is any name by which the local system knows the remote LU for purposes of allocating a conversation. partner_LU_name_length (input) Specifies the length of the partner LU name. The length can be from 1 to 17 bytes. return_code (output) Specifies the result of the call execution. The return_code variable can have one of the following values: o CM_OK o CM_CALL_NOT_SUPPORTED o CM_PROGRAM_PARAMETER_CHECK This value indicates one of the following: - The conversation_ID specifies an unassigned conversation identifier. - The partner_LU_name_length is set to a value less than 1 or greater than 17. - The partner_ID characteristic is set to a non-null value. o CM_PROGRAM_STATE_CHECK This value indicates that the conversation is not in INITIALIZE state. o CM_OPERATION_NOT_ACCEPTED o CM_PRODUCT_SPECIFIC_ERROR State Changes This call does not cause a state change. Usage Notes 1. Specify partner_LU_name using the local system's native encoding. CPI Communications automatically converts the partner_LU_name from the native encoding where necessary. 2. If a return_code other than CM_OK is returned on the call, the partner_LU_name and partner_LU_name_length conversation characteristics are unchanged. ----------------------------------- Set_Prepare_Data_Permitted (CMSPDP) Set_Prepare_Data_Permitted (CMSPDP) is used by a program to set the prepare_data_permitted characteristic for a given conversation. Set_Prepare_Data_Permitted overrides the value that was assigned when the Initialize_Conversation call was issued. The subordinate program on the conversation cannot issue the Set_Prepare_Data_Permitted call. NOTE: The prepare_data_permitted characteristic is used only by an OSI TP CRM and only for a half-duplex conversation. Format +--------------------------------------------------------------------+ | CALL CMSPDP(conversation_ID, | | prepare_data_permitted, | | return_code) | +--------------------------------------------------------------------+ Parameters conversation_ID (input) Specifies the conversation identifier. prepare_data_permitted (input) Specifies whether the superior program wants to allow the subordinate to send data following the receipt of a take-commit notification. The prepare_data_permitted variable can have one of the following values: o CM_PREPARE_DATA_NOT_PERMITTED Specifies the subordinate will not be permitted to send data following the receipt of a take-commit notification. o CM_PREPARE_DATA_PERMITTED Specifies the subordinate will be permitted to send data following the receipt of a take-commit notification. return_code (output) Specifies the result of the call execution. The return_code variable can have one of the following values: o CM_OK o CM_CALL_NOT_SUPPORTED o CM_PROGRAM_PARAMETER_CHECK This value indicates one of the following: - The conversation_ID specifies an unassigned identifier. - The prepare_data_permitted specifies CM_PREPARE_DATA_PERMITTED and the conversation is using an LU 6.2 CRM. - The prepare_data_permitted specifies an undefined value. - The sync_level is set to CM_NONE or CM_CONFIRM. - The program is not the superior for the conversation. o CM_PROGRAM_STATE_CHECK This value indicates that the conversation is in INITIALIZE-INCOMING state. o CM_OPERATION_NOT_ACCEPTED o CM_PRODUCT_SPECIFIC_ERROR State Changes This call does not cause any state changes. Usage Notes 1. If a return_code other than CM_OK is returned on the call, the prepare_data_permitted conversation characteristic remains unchanged. 2. When the Prepare call is issued with the prepare_data_permitted characteristic set to CM_PREPARE_DATA_PERMITTED, the subordinate program is notified that it is permitted to send data through a take-commit notification that ends in a status_received value of CM_TAKE_COMMIT_DATA_OK, CM_TAKE_COMMIT_SEND_DATA_OK, or CM_TAKE_COMMIT_DEALLOC_DATA_OK. Related Information See "Prepare (CMPREP)" for a description of the Prepare call. ------------------------------------ Set_Prepare_To_Receive_Type (CMSPTR) Set_Prepare_To_Receive_Type (CMSPTR) is used by a program to set the prepare_to_receive_type characteristic for a conversation. This call overrides the value that was assigned when the Initialize_Conversation, Accept_Conversation, or Initialize_For_Incoming call was issued. NOTE: The prepare_to_receive_type characteristic is used only for a half-duplex conversation. Format +--------------------------------------------------------------------+ | CALL CMSPTR(conversation_ID, | | prepare_to_receive_type, | | return_code) | +--------------------------------------------------------------------+ Parameters conversation_ID (input) Specifies the conversation identifier. prepare_to_receive_type (input) Specifies the type of prepare-to-receive processing to be performed for this conversation. The prepare_to_receive_type variable can have one of the following values: o CM_PREP_TO_RECEIVE_SYNC_LEVEL Perform the prepare-to-receive based on one of the following sync_level settings: - If sync_level is set to CM_NONE, or if sync_level is set to CM_SYNC_POINT_NO_CONFIRM but the conversation is not currently included in a transaction, execute the function of the Flush call and enter RECEIVE state. - If sync_level is set to CM_CONFIRM, or if sync_level is set to CM_SYNC_POINT but the conversation is not currently included in a transaction, execute the function of the Confirm call and if successful (as indicated by a return code of CM_OK on the Prepare_To_Receive call, or a return code of CM_OK on the Send_Data call with send_type set to CM_SEND_AND_PREP_TO_RECEIVE), enter RECEIVE state. If Confirm is not successful, the state of the conversation is determined by the return code. - If sync_level is set to CM_SYNC_POINT and the conversation is included in a transaction, enter DEFER-RECEIVE state until the program issues a resource recovery commit or backout call, or until the program issues a Confirm or Flush call for this conversation. If the commit or Confirm call is successful or if a Flush call is issued, the conversation then enters RECEIVE state. If the backout call is successful, the conversation returns to its state at the previous sync point. Otherwise, the state of the conversation is determined by the return code. - If sync_level is set to CM_SYNC_POINT_NO_CONFIRM, and the conversation is included in a transaction, enter DEFER-RECEIVE state until the program issues a resource recovery commit or backout call, or until the program issues a Flush call for this conversation. If the commit call is successful or if a Flush call is issued, the conversation then enters RECEIVE state. If the backout call is successful, the conversation returns to its state at the previous sync point. Otherwise, the state of the conversation is determined by the return code. o CM_PREP_TO_RECEIVE_FLUSH Execute the function of the Flush call and enter RECEIVE state. o CM_PREP_TO_RECEIVE_CONFIRM Execute the function of the Confirm call and if successful (as indicated by a return code of CM_OK on the Prepare_To_Receive call, or a return code of CM_OK on the Send_Data call with send_type set to CM_SEND_AND_PREP_TO_RECEIVE), enter RECEIVE state. If it is not successful, the state of the conversation is determined by the return code. return_code (output) Specifies the result of the call execution. The return_code variable can have one of the following values: o CM_OK o CM_PROGRAM_PARAMETER_CHECK This value indicates one of the following: - The conversation_ID specifies an unassigned conversation identifier. - The prepare_to_receive_type is set to an undefined value. - The prepare_to_receive_type is CM_PREP_TO_RECEIVE_CONFIRM, but the conversation is assigned with sync_level set to CM_NONE or CM_SYNC_POINT_NO_CONFIRM. - The send_receive_mode of the conversation is CM_FULL_DUPLEX. o CM_PROGRAM_STATE_CHECK This value indicates that the conversation is in INITIALIZE-INCOMING state. o CM_OPERATION_NOT_ACCEPTED o CM_PRODUCT_SPECIFIC_ERROR State Changes This call does not cause a state change. Usage Notes If a return_code other than CM_OK is returned on the call, the prepare_to_receive_type conversation characteristic is unchanged. --------------------------- Set_Processing_Mode (CMSPM) A program uses the Set_Processing_Mode (CMSPM) call to set the processing_mode characteristic of a conversation. The processing_mode characteristic indicates whether CPI Communications calls on the specified conversation are to be processed in blocking or non-blocking mode. Set_Processing_Mode overrides the default value of CM_BLOCKING that was assigned when the Initialize_Conversation, Initialize_For_Incoming, or Accept_Conversation call was issued. The processing mode of a conversation cannot be changed prior to the completion of all previous call operations on that conversation. NOTE: The processing_mode characteristic is used only for a half-duplex conversation. Format +--------------------------------------------------------------------+ | CALL CMSPM(conversation_ID, | | processing_mode, | | return_code) | +--------------------------------------------------------------------+ Parameters conversation_ID (input) Specifies the conversation identifier. processing_mode (input) Specifies the processing mode to be used for this conversation. processing_mode can have one of the following values: o CM_BLOCKING Specifies that calls will be processed in blocking mode. Calls complete before control is returned to the program. The CM_OPERATION_INCOMPLETE return code will not be returned on this conversation. o CM_NON_BLOCKING Specifies that calls will be processed in non-blocking mode. If possible, the calls complete immediately. When a call operation cannot complete immediately, CPI Communications returns control to the program with the CM_OPERATION_INCOMPLETE return code. The operation proceeds without blocking the program. return_code (output) Specifies the result of the call execution. The return_code variable can have one of the following values: o CM_OK o CM_CALL_NOT_SUPPORTED o CM_PROGRAM_PARAMETER_CHECK This value indicates one of the following: - The conversation_ID specifies an unassigned conversation identifier. - The processing_mode specifies an undefined value. - The send_receive_mode of the conversation is CM_FULL_DUPLEX. - The program has chosen queue-level non-blocking for the conversation. o CM_OPERATION_NOT_ACCEPTED This value indicates that a previous call operation on the conversation is still in progress. o CM_PRODUCT_SPECIFIC_ERROR State Changes This call does not cause any state changes. Usage Notes 1. A program can choose to use conversation-level non-blocking by issuing the Set_Processing_Mode call to set the processing_mode characteristic to CM_NON_BLOCKING for a conversation. The processing mode applies to all the subsequent calls on that conversation until it is set otherwise or the conversation ends. 2. If a return_code other than CM_OK is returned on the call, the processing_mode conversation characteristic is unchanged. 3. When CM_OPERATION_INCOMPLETE is returned from any of the calls listed in Table 10, the call operation has not completed. The operation proceeds without blocking the program. The data and buffer areas used in the call are in an indeterminate state and should not be referenced until the operation is completed. For conversations using conversation-level non-blocking, the Wait_For_Conversation call is used to determine when an operation is completed. Each call to Wait_For_Conversation will return the conversation identifier and return code (the conversation_return_code value) of a completed operation. It is the responsibility of the program to keep track of the operation being performed by each conversation in order to be able to properly interpret the conversation_return_code value. If programs place the Wait_For_Conversation call in a procedure other than the accompanying CPI-C call that returned CM_OPERATION_INCOMPLETE, all parameters of that CPI-C call must be in global storage and not in automatic storage. This is important even for parameters the program does not use. For example, if the partner program will never use any call that results in a control_information_received value, other than CM_NO_CONTROL_INFO_RECEIVED, the local program still has to place the control_information_received parameter of the Receive call in global storage. 4. Not all language processors support the use of non-blocking operations. See "Programming Language Considerations" for language processor restrictions on the use of non-blocking operations. ------------------------------------ Set_Queue_Callback_Function (CMSQCF) Set_Queue_Callback_Function (CMSQCF) is used to set a callback function and a user field for a given conversation queue and to set the queue's processing mode to CM_NON_BLOCKING. Format +--------------------------------------------------------------------+ | | | CALL CMSQCF(conversation_ID, | | conversation_queue, | | callback_function, | | user_field, | | return_code) | +--------------------------------------------------------------------+ Parameters conversation_ID (input) Specifies the conversation identifier. conversation_queue (input) Specifies the conversation queue on which completion of a call operation will invoke the callback function. The conversation_queue can have one of the following values: o CM_INITIALIZATION_QUEUE o CM_SEND_QUEUE o CM_RECEIVE_QUEUE o CM_SEND_RECEIVE_QUEUE o CM_EXPEDITED_SEND_QUEUE o CM_EXPEDITED_RECEIVE_QUEUE callback_function (input) Specifies a callback function to be set for the identified queue. user_field (input) Specifies a user field to be associated with the identified queue. return_code (output) Specifies the result of the call execution. The return_code variable can have one of the following values: o CM_OK o CM_CALL_NOT_SUPPORTED o CM_PROGRAM_PARAMETER_CHECK This value indicates one of the following: - The conversation_ID contains an unassigned conversation identifier. - The conversation_queue specifies a value that is not defined for the send_receive_mode conversation characteristic. - The program has chosen conversation-level non-blocking for the conversation. o CM_PROGRAM_STATE_CHECK This value indicates one of the following: - The conversation_queue parameter is set to CM_INITIALIZATION_QUEUE, and the conversation is not in INITIALIZE or INITIALIZE-INCOMING state. - The conversation_queue parameter is set to CM_SEND_QUEUE, CM_RECEIVE_QUEUE, CM_SEND_RECEIVE_QUEUE, CM_EXPEDITED_SEND_QUEUE, or CM_EXPEDITED_RECEIVE_QUEUE, and the conversation is in INITIALIZE-INCOMING state. o CM_OPERATION_NOT_ACCEPTED o CM_PRODUCT_SPECIFIC_ERROR State Changes This call does not cause a state change. Usage Notes 1. Because of requiring support of passing a callback function as a parameter, the call is supported by the C programming language only. 2. A program can choose to use queue-level non-blocking by issuing the Set_Queue_Callback_Function call (or the Set_Queue_Processing_Mode call) for a conversation queue. When the call completes successfully, the processing_mode characteristic becomes meaningless to the conversation. 3. The call is associated with the queue specified in the conversation_queue parameter. 4. The program can issue the call for a conversation queue that is defined for the current send-receive mode. The defined queues for each send-receive mode are listed in Table 18 under the "Usage Notes" for the Set_Queue_Processing_Mode call. In the special case when the conversation is in INITIALIZE-INCOMING state, the send_receive_mode characteristic has no defined value. The program can issue the call only for the Initialization queue. 5. Until the program sets the processing mode for a conversation queue (or chooses conversation-level non-blocking), all the calls associated with that queue are processed in blocking mode. 6. The call sets the processing mode of the identified queue to CM_NON_BLOCKING. The processing mode applies to all subsequent calls to the queue until the processing mode is set to CM_BLOCKING using a Set_Queue_Processing_Mode (CMSQPM) call or the conversation ends. 7. Once set for the identified queue, the callback function and user field will be associated with all subsequent outstanding operations on the queue until they are set differently, a Set_Queue_Processing_Mode (CMSQPM) call is issued, or the conversation ends. 8. When CM_OPERATION_INCOMPLETE is returned from any of the calls listed in Table 10, the call operation has not completed. The operation proceeds without blocking the program. The data and buffer areas used in the call are in an indeterminate state and should not be referenced until the operation is completed. 9. A callback function is a user-defined routine and has two input parameters, user_field and call_ID. It is used to handle completion of an outstanding operation. If a callback function is set for a conversation queue, the function is invoked when an outstanding operation on the queue completes. The user field, as specified by the program, and call ID for the completed operation can then be passed to the callback function. NOTE: An exception is the Microsoft Windows** environment. The callback_function parameter is ignored in Windows, and the user_field parameter contains a pointer to a structure of type "MSG", as defined by Windows. The structure contains at least a window handle, message number, word value, and doubleword value. When an outstanding operation completes, CPI Communications will use these fields as arguments to call the Windows "PostMessage" function. Upon catching the message, the program can then invoke a routine (taking the word value and doubleword value as input) to handle the completion of the outstanding operation. ---------------------------------- Set_Queue_Processing_Mode (CMSQPM) Set_Queue_Processing_Mode (CMSQPM) is used to set the processing mode for a given conversation queue. When the queue_processing_mode is set to CM_NON_BLOCKING, this call also associates an outstanding-operation identifier (OOID) and a user field with the queue. Format +--------------------------------------------------------------------+ | | | CALL CMSQPM(conversation_ID, | | conversation_queue, | | queue_processing_mode, | | user_field, | | OOID, | | return_code) | +--------------------------------------------------------------------+ Parameters conversation_ID (input) Specifies the conversation identifier. conversation_queue (input) Specifies the conversation queue for which the processing mode is to be set by this call. conversation_queue can have one of the following values: o CM_INITIALIZATION_QUEUE o CM_SEND_QUEUE o CM_RECEIVE_QUEUE o CM_SEND_RECEIVE_QUEUE o CM_EXPEDITED_SEND_QUEUE o CM_EXPEDITED_RECEIVE_QUEUE queue_processing_mode (input) Specifies the processing mode to be used for the identified queue. queue_processing_mode can have one of the following values: o CM_BLOCKING o CM_NON_BLOCKING user_field (input) Specifies a user field to be associated with the identified queue, when queue_processing_mode is set to CM_NON_BLOCKING. OOID (output) Specifies an outstanding operation identifier assigned to the identified queue, when queue_processing_mode is set to CM_NON_BLOCKING. return_code (output) Specifies the result of the call execution. The return_code variable can have one of the following values: o CM_OK o CM_CALL_NOT_SUPPORTED o CM_PROGRAM_PARAMETER_CHECK This value indicates one of the following: - The conversation_ID contains an unassigned conversation identifier. - The conversation_queue specifies a value that is not defined for the send_receive_mode conversation characteristic. - The queue_processing_mode specifies an undefined value. - The program has chosen conversation-level non-blocking for the conversation. o CM_PROGRAM_STATE_CHECK This value indicates one of the following: - The conversation_queue parameter is set to CM_INITIALIZATION_QUEUE, and the conversation is not in INITIALIZE or INITIALIZE-INCOMING state. - The conversation_queue parameter is set to CM_SEND_QUEUE, CM_RECEIVE_QUEUE, CM_SEND_RECEIVE_QUEUE, CM_EXPEDITED_SEND_QUEUE, or CM_EXPEDITED_RECEIVE_QUEUE, and the conversation is in INITIALIZE-INCOMING state. o CM_OPERATION_NOT_ACCEPTED o CM_PRODUCT_SPECIFIC_ERROR State Changes This call does not cause a state change. Usage Notes 1. A program can choose to use queue-level non-blocking by issuing the Set_Queue_Processing_Mode call (or the Set_Queue_Callback_Function call) for a conversation queue. When the call completes successfully, the processing_mode characteristic becomes meaningless to the conversation. 2. The call is associated with the queue specified in the conversation_queue parameter. 3. The program can issue the call for a conversation queue that is defined for the current send-receive mode. The defined queues for each send-receive mode are listed in Table 18. In the special case when the conversation is in INITIALIZE-INCOMING state, the send_receive_mode characteristic has no defined value. The program can issue the call only for the Initialization queue. +----------------------------------------------------------------+ | Table 18. Full-Duplex and Half-Duplex Conversation Queues | +--------------------------------+-------------------------------+ | SEND-RECEIVE MODE | CONVERSATION QUEUES | +--------------------------------+-------------------------------+ | Full-Duplex | Initialization | | | Send | | | Receive | | | Expedited-Send | | | Expedited-Receive | +--------------------------------+-------------------------------+ | Half-Duplex | Initialization | | | Send-Receive | | | Expedited-Send | | | Expedited-Receive | +--------------------------------+-------------------------------+ 4. Until the program sets the processing mode for a conversation queue (or chooses conversation-level non-blocking), all the calls associated with that queue are processed in blocking mode. 5. If a return code other than CM_OK is returned on the call, the processing mode of the specified queue is unchanged. 6. Once a processing mode is set for a conversation queue, the processing mode applies to all the subsequent calls associated with the queue until it is set differently using the call or until the conversation ends. 7. If the queue processing mode is CM_BLOCKING, no OOID is returned on the call. Therefore, the program should ignore the OOID parameter. 8. If the queue processing mode is CM_NON_BLOCKING, an OOID is returned on the call. The OOID will be associated with all subsequent outstanding operations on the queue until the processing mode is set to CM_BLOCKING, a Set_Queue_Callback_Function (CMSQCF) call is issued, or the conversation ends. 9. When the program issues the call for a conversation queue and sets the queue processing mode to CM_NON_BLOCKING for the first time, an OOID is created and set for the queue. The OOID remains with the queue until the conversation ends. Even if the queue processing mode changes several times or a Set_Queue_Callback_Function (CMSQCF) call is issued during the conversation, each Set_Queue_Processing_Mode call to return to CM_NON_BLOCKING reactivates the same OOID for that queue. 10. When CM_OPERATION_INCOMPLETE is returned from any of the calls listed in Table 10, the call operation has not completed. The operation proceeds without blocking the program. The data and buffer areas used in the call are in an indeterminate state and should not be referenced until the operation is completed. For conversations using the Set_Queue_Processing_Mode call, the Wait_For_Completion call is used to determine when an outstanding operation is completed. 11. The program may specify a user field on the call when the queue processing mode is CM_NON_BLOCKING. If the program chooses to do so, the user field will be associated with the identified queue along with an OOID. The user field specified by the program will be returned on the user_field_list parameter of the Wait_For_Completion (CMWCMP) call when an outstanding operation with the OOID has completed. ------------------------ Set_Receive_Type (CMSRT) Set_Receive_Type (CMSRT) is used by a program to set the receive_type characteristic for a conversation. Set_Receive_Type overrides the value that was assigned when the Initialize_Conversation, Accept_Conversation, or Initialize_For_Incoming call was issued. Format +--------------------------------------------------------------------+ | CALL CMSRT(conversation_ID, | | receive_type, | | return_code) | +--------------------------------------------------------------------+ Parameters conversation_ID (input) Specifies the conversation identifier. receive_type (input) Specifies the type of receive to be performed. The receive_type variable can have one of the following values: o CM_RECEIVE_AND_WAIT The Receive call is to wait for information to arrive on the specified conversation. If information is already available, the program receives it without waiting. o CM_RECEIVE_IMMEDIATE The Receive call is to receive any information that is available from the specified conversation, but is not to wait for information to arrive. return_code (output) Specifies the result of the call execution. The return_code variable can have one of the following values: o CM_OK o CM_PROGRAM_PARAMETER_CHECK This value indicates one of the following: - The conversation_ID specifies an unassigned conversation identifier. - The receive_type specifies an undefined value. o CM_OPERATION_NOT_ACCEPTED o CM_PRODUCT_SPECIFIC_ERROR State Changes This call does not cause a state change. Usage Notes If a return_code other than CM_OK is returned on the call, the receive_type conversation characteristic is unchanged. -------------------------- Set_Return_Control (CMSRC) Set_Return_Control (CMSRC) is used to set the return_control characteristic for a given conversation. Set_Return_Control overrides the value that was assigned when the Initialize_Conversation call was issued. NOTE: A program cannot issue the Set_Return_Control call after an Allocate has been issued for a conversation. Only the program that initiates the conversation (with the Initialize_Conversation call) can issue this call. Format +--------------------------------------------------------------------+ | CALL CMSRC(conversation_ID, | | return_control, | | return_code) | +--------------------------------------------------------------------+ Parameters conversation_ID (input) Specifies the conversation identifier. return_control (input) Specifies when a program receives control back after issuing a call to Allocate. The return_control can have one of the following values: o CM_WHEN_SESSION_ALLOCATED Allocate a logical connection for the conversation before returning control to the program. o CM_IMMEDIATE Allocate a logical connection for the conversation if a logical connection is immediately available and return control to the program with one of the following return codes indicating whether or not a logical connection is allocated. - A return code of CM_OK indicates a logical connection was immediately available and has been allocated for the conversation. A logical connection is immediately available when it is active; the logical connection is not allocated to another conversation; and, for an LU 6.2 CRM, the local system is the contention winner for the logical connection. - A return code of CM_UNSUCCESSFUL indicates a logical connection is not immediately available. Allocation is not performed. return_code (output) Specifies the result of the call execution. The return_code variable can have one of the following values: o CM_OK o CM_PROGRAM_STATE_CHECK This value indicates that the conversation is not in INITIALIZE state. o CM_PROGRAM_PARAMETER_CHECK This value indicates one of the following: - The conversation_ID specifies an unassigned conversation identifier. - The return_control specifies an undefined value. o CM_OPERATION_NOT_ACCEPTED o CM_PRODUCT_SPECIFIC_ERROR State Changes This call does not cause a state change. Usage Notes 1. An allocation error resulting from the local system's failure to obtain a logical connection for the conversation is reported on the Allocate call. An allocation error resulting from the remote system's rejection of the conversation startup request is reported on a subsequent conversation call. 2. For an LU 6.2 CRM, two systems connected by a logical connection may both attempt to allocate a conversation on the logical connection at the same time. This is called contention. Contention is resolved by making one system the contention winner of the session and the other system the contention loser of the session. The contention-winner system allocates a conversation on a session without asking permission from the contention-loser system. Conversely, the contention-loser system requests permission from the contention-winner system to allocate a conversation on the session, and the contention-winner system either grants or rejects the request. For more information, see SNA Transaction Programmer's Reference Manual for LU Type 6.2. Contention may result in a CM_UNSUCCESSFUL return code for programs specifying CM_IMMEDIATE. 3. The program can modify the function of the Allocate call by specifying a return_control characteristic of CM_IMMEDIATE. The result is that control is returned to the program immediately if no session is available. Use of the distributed directory for destination information makes it impossible to guarantee a similar level of function because the CPI Communications implementation's call to the distributed directory might itself make use of a resource that is not immediately available. Programs requiring immediate return of control on the Allocate call should consider using non-blocking function, or accessing the directory directly and providing the information as a program binding to CPI Communications using the Set_Partner_ID call. 4. If a return_code other than CM_OK is returned on the call, the return_control conversation characteristic is unchanged. ------------------------------ Set_Send_Receive_Mode (CMSSRM) The Set_Send_Receive_Mode (CMSSRM) call is used by a program to set the send_receive_mode characteristic for a conversation. Set_Send_Receive_Mode overrides the value that was assigned when the Initialize_Conversation call was issued. NOTE: A program cannot issue Set_Send_Receive_Mode after an Allocate call is issued. Only the program that initiated the conversation (issued the Initialize_Conversation call) can issue Set_Send_Receive_Mode. Format +--------------------------------------------------------------------+ | CALL CMSSRM(conversation_ID, | | send_receive_mode, | | return_code) | +--------------------------------------------------------------------+ Parameters conversation_ID (input) Specifies the conversation identifier. send_receive_mode (input) Specifies the send-receive mode of the conversation. The send_receive_mode variable can have one of the following values: o CM_HALF_DUPLEX Specifies the allocation of a half-duplex conversation. o CM_FULL_DUPLEX Specifies the allocation of a full-duplex conversation. return_code (output) Specifies the result of the call execution. The return_code variable can have one of the following values: o CM_OK o CM_CALL_NOT_SUPPORTED o CM_PROGRAM_STATE_CHECK This value indicates that the program is not in INITIALIZE state. o CM_PROGRAM_PARAMETER_CHECK This value indicates one of the following: - The conversation_ID specifies an unassigned conversation identifier. - The send_receive_mode specifies an undefined value. - The sync_level is set to CM_CONFIRM or CM_SYNC_POINT, and send_receive_mode is set to CM_FULL_DUPLEX. - The sync_level is set to CM_SYNC_POINT_NO_CONFIRM, the conversation is using a LU 6.2 CRM, and the send_receive_mode specifies CM_HALF_DUPLEX. - The send_type is set to CM_SEND_AND_CONFIRM or CM_SEND_AND_PREP_TO_RECEIVE, and send_receive_mode is set to CM_FULL_DUPLEX. - The deallocate_type is set to CM_DEALLOCATE_CONFIRM, the conversation is using a LU 6.2 CRM, and the send_receive_mode specifies CM_FULL_DUPLEX. - The program has selected conversation-level non-blocking by issuing Set_Processing_Mode successfully, and send_receive_mode is set to CM_FULL_DUPLEX. o CM_OPERATION_NOT_ACCEPTED o CM_PRODUCT_SPECIFIC_ERROR State Changes This call does not cause a state change. Usage Notes 1. If a return_code other than CM_OK is returned on the call, the send_receive_mode characteristic is unchanged. 2. Set_Send_Receive_Mode overrides the value assigned with the Initialize_Conversation call and can only be issued when the program is in INITIALIZE state. --------------------- Set_Send_Type (CMSST) Set_Send_Type (CMSST) is used by a program to set the send_type characteristic for a conversation. Set_Send_Type overrides the value that was assigned when the Initialize_Conversation, Accept_Conversation, or Initialize_For_Incoming call was issued. Format +--------------------------------------------------------------------+ | CALL CMSST(conversation_ID, | | send_type, | | return_code) | +--------------------------------------------------------------------+ Parameters conversation_ID (input) Specifies the conversation identifier. send_type (input) Specifies what, if any, information is to be sent to the remote program in addition to the data supplied on the Send_Data call, and whether the data is to be sent immediately or buffered. The send_type variable can have one of the following values: o CM_BUFFER_DATA No additional information is to be sent to the remote program. Further, the supplied data might not be sent immediately but, instead, might be buffered until a sufficient quantity is accumulated. o CM_SEND_AND_FLUSH No additional information is to be sent to the remote program. However, the supplied data is sent immediately rather than buffered. Send_Data with send_type set to CM_SEND_AND_FLUSH is functionally equivalent to a Send_Data with send_type set to CM_BUFFER_DATA followed by a Flush call. o CM_SEND_AND_CONFIRM (half-duplex conversations only) The supplied data is to be sent to the remote program immediately, along with a request for confirmation. Send_Data with send_type set to CM_SEND_AND_CONFIRM is functionally equivalent to Send_Data with send_type set to CM_BUFFER_DATA followed by a Confirm call. o CM_SEND_AND_PREP_TO_RECEIVE (half-duplex conversations only) The supplied data is to be sent to the remote program immediately, along with send control of the conversation. Send_Data with send_type set to CM_SEND_AND_PREP_TO_RECEIVE is functionally equivalent to Send_Data with send_type set to CM_BUFFER_DATA followed by a Prepare_To_Receive call. The action depends on the value of the prepare_to_receive_type characteristic for the conversation. o CM_SEND_AND_DEALLOCATE The supplied data is to be sent to the remote program immediately, along with a deallocation notification. Send_Data with send_type set to CM_SEND_AND_DEALLOCATE is functionally equivalent to Send_Data with send_type set to CM_BUFFER_DATA followed by a call to Deallocate. The action depends on the value of the deallocate_type characteristic for the conversation. return_code (output) Specifies the result of the call execution. The return_code variable can have one of the following values: o CM_OK o CM_PROGRAM_PARAMETER_CHECK This value indicates one of the following: - The conversation_ID specifies an unassigned conversation identifier. - The send_type is set to CM_SEND_AND_CONFIRM and the conversation is assigned with sync_level set to CM_NONE or CM_SYNC_POINT_NO_CONFIRM. - The send_type specifies an undefined value. - The send_type is set to CM_SEND_AND_CONFIRM or CM_SEND_AND_PREP_TO_RECEIVE and the send_receive_mode is set to CM_FULL_DUPLEX. o CM_PROGRAM_STATE_CHECK This value indicates the conversation is in INITIALIZE-INCOMING state. o CM_OPERATION_NOT_ACCEPTED o CM_PRODUCT_SPECIFIC_ERROR State Changes This call does not cause a state change. Usage Notes If a return_code other than CM_OK is returned on the call, the send_type conversation characteristic is unchanged. ---------------------- Set_Sync_Level (CMSSL) Set_Sync_Level (CMSSL) is used by a program to set the sync_level characteristic for a given conversation. The sync_level characteristic is used to specify the level of synchronization processing between the two programs. It determines whether the programs support no synchronization, confirmation-level synchronization (using the Confirm and Confirmed CPI Communications calls), or sync-point-level synchronization (using the calls of a resource recovery interface). Set_Sync_Level overrides the value that was assigned when the Initialize_Conversation call was issued. NOTE: A program cannot use the Set_Sync_Level call after an Allocate has been issued. Only the program that initiates a conversation (using the Initialize_Conversation call) can issue this call. Format +--------------------------------------------------------------------+ | CALL CMSSL(conversation_ID, | | sync_level, | | return_code) | +--------------------------------------------------------------------+ Parameters conversation_ID (input) Specifies the conversation identifier. sync_level (input) Specifies the synchronization level that the local and remote programs can use on this conversation. The sync_level can have one of the following values: o CM_NONE The programs will not perform confirmation or sync point processing on this conversation. The programs will not issue any calls or recognize any returned parameters relating to synchronization. o CM_CONFIRM (half-duplex conversations only) The programs can perform confirmation processing on this conversation. The programs can issue calls and recognize returned parameters relating to confirmation. o CM_SYNC_POINT (half-duplex conversations only) The programs can perform sync point processing on this conversation. The programs can issue resource recovery interface calls and will recognize returned parameters relating to resource recovery processing. The programs can also perform confirmation processing. o CM_SYNC_POINT_NO_CONFIRM The programs can perform sync point processing on this conversation. The programs can issue resource recovery interface calls and will recognize returned parameters relating to resource recovery processing. The programs cannot perform confirmation processing. NOTE: If the conversation is using an OSI TP CRM, confirmation of the deallocation of the conversation can be performed with any sync_level value. return_code (output) Specifies the result of the call execution. The return_code variable can have one of the following values: o CM_OK o CM_PARM_VALUE_NOT_SUPPORTED This value indicates that the sync_level specifies CM_SYNC_POINT or CM_SYNC_POINT_NO_CONFIRM and the value is not supported by the local system. o CM_PROGRAM_STATE_CHECK This value indicates that the conversation is not in INITIALIZE state. o CM_PROGRAM_PARAMETER_CHECK This value indicates one of the following: - The conversation_ID specifies an unassigned conversation identifier. - The sync_level specifies CM_NONE, the deallocate_type is set to CM_DEALLOCATE_CONFIRM, and the conversation is using an LU 6.2 CRM. - The sync_level specifies CM_NONE, the send_receive_mode is set to CM_HALF_DUPLEX, and the prepare_to_receive_type is set to CM_PREP_TO_RECEIVE_CONFIRM. - The sync_level specifies CM_NONE or CM_SYNC_POINT_NO_CONFIRM, the send_receive_mode is set to CM_HALF_DUPLEX, and the send_type is set to CM_SEND_AND_CONFIRM. - The sync_level specifies CM_CONFIRM or CM_SYNC_POINT and the send_receive_mode is set to CM_FULL_DUPLEX. - The sync_level specifies CM_SYNC_POINT or CM_SYNC_POINT_NO_CONFIRM, the deallocate_type is set to CM_DEALLOCATE_FLUSH or CM_DEALLOCATE_CONFIRM, and the conversation is using an LU 6.2 CRM. - The sync_level specifies CM_SYNC_POINT_NO_CONFIRM, the send_receive_mode is set to CM_HALF_DUPLEX, and the conversation is using an LU 6.2 CRM. - The sync_level specifies an undefined value. o CM_OPERATION_NOT_ACCEPTED o CM_PRODUCT_SPECIFIC_ERROR State Changes This call does not cause a state change. Usage Notes If a return_code other than CM_OK is returned on the call, the sync_level conversation characteristic is unchanged. -------------------- Set_TP_Name (CMSTPN) Set_TP_Name (CMSTPN) is used by a program to set the TP_name and TP_name_length characteristics for a given conversation. Set_TP_Name overrides the current values that were originally acquired from the side information using the sym_dest_name. This call does not change the values in the side information. Set_TP_Name only changes theTP_name and TP_name_length characteristics for this conversation. NOTE: A program cannot issue Set_TP_Name after an Allocate is issued. Only a program that initiates a conversation (using the Initialize_Conversation call) can issue this call. Format +--------------------------------------------------------------------+ | CALL CMSTPN(conversation_ID, | | TP_name, | | TP_name_length, | | return_code) | +--------------------------------------------------------------------+ Parameters conversation_ID (input) Specifies the conversation identifier. TP_name (input) Specifies the name of the remote program. NOTE: A program may require special authority to specify some TP names. For example, SNA service transaction programs require special authority with LU 6.2. (For more information, see "SNA Service Transaction Programs" on page 2.) TP_name_length (input) Specifies the length of TP_name. The length can be from 1 to 64 bytes. return_code (output) Specifies the result of the call execution. The return_code can have one of the following values: o CM_OK o CM_PROGRAM_STATE_CHECK This value indicates that the conversation is not in INITIALIZE state. o CM_PROGRAM_PARAMETER_CHECK This value indicates one of the following: - The conversation_ID specifies an unassigned conversation identifier. - The TP_name_length specifies a value less than 1 or greater than 64. - The partner_ID characteristic is set to a non-null value. o CM_OPERATION_NOT_ACCEPTED o CM_PRODUCT_SPECIFIC_ERROR State Changes This call does not cause a state change. Usage Notes 1. Specify TP_name using the local system's native encoding. CPI Communications automatically converts the TP_name from the native encoding where necessary. 2. If a return_code other than CM_OK is returned on the call, the TP_name and TP_name_length conversation characteristics are unchanged. 3. The TP_name specified on this call must be formatted according to the naming conventions of the partner system. ------------------------------- Set_Transaction_Control (CMSTC) Set_Transaction_Control (CMSTC) is used by a program to set the transaction_control characteristic for a given conversation. Set_Transaction_Control overrides the value that was assigned when the Initialize_Conversation call was issued. NOTES: 1. Only the program that initiates the conversation can issue this call. 2. The transaction_control characteristic is used only by an OSI TP CRM. Format +--------------------------------------------------------------------+ | CALL CMSTC(conversation_ID, | | transaction_control, | | return_code) | +--------------------------------------------------------------------+ Parameters conversation_ID (input) Specifies the conversation identifier. transaction_control (input) Specifies whether the superior program wants to use chained or unchained transactions on the conversation with the subordinate. The transaction_control variable can have one of the following values: o CM_CHAINED_TRANSACTIONS Specifies that the conversation will use chained transactions. o CM_UNCHAINED_TRANSACTIONS Specifies that the conversation will use unchained transactions. return_code (output) Specifies the result of the call execution. The return_code variable can have one of the following values: o CM_OK o CM_CALL_NOT_SUPPORTED o CM_PROGRAM_STATE_CHECK This value indicates that the conversation is not in the INITIALIZE state. o CM_PROGRAM_PARAMETER_CHECK This value indicates one of the following: - The conversation_ID specifies an unassigned identifier. - The transaction_control specifies an undefined value. - The sync_level is set to either CM_NONE or CM_CONFIRM. - The transaction_control specifies CM_UNCHAINED_TRANSACTIONS, and the conversation is using an LU 6.2 CRM. o CM_OPERATION_NOT_ACCEPTED o CM_PRODUCT_SPECIFIC_ERROR State Changes This call does not cause any state changes. Usage Notes If a return_code other than CM_OK is returned on the call, the transaction_control conversation characteristic remains unchanged. Related Information "Chained and Unchained Transactions" provides more information about using chained and unchained transactions with CPI Communications. ------------------------------ Specify_Local_TP_Name (CMSLTP) A program uses the Specify_Local_TP_Name (CMSLTP) call to associate a name with itself, thus notifying CPI Communications that it can accept conversations destined for the name. A program may have many local names simultaneously. It can extract the TP_name for a particular conversation using the Extract_TP_Name call. Format +--------------------------------------------------------------------+ | CALL CMSLTP(TP_name, | | TP_name_length, | | return_code) | +--------------------------------------------------------------------+ Parameters TP_name (input) Specifies a name to be associated with this program. TP_name_length (input) Specifies the length of TP_name. The length can be from 1 to 64 bytes. return_code (output) Specifies the result of the call execution. The return_code variable can have one of the following values: o CM_OK o CM_CALL_NOT_SUPPORTED o CM_PROGRAM_PARAMETER_CHECK This value indicates one of the following: - The TP_name specifies a name that is restricted in some way by node services. - The TP_name has incorrect internal syntax as defined by node services. - The TP_name_length specifies a value less than 1 or greater than 64. o CM_PRODUCT_SPECIFIC_ERROR State Changes This call does not cause any state changes. Usage Notes 1. If a return_code other than CM_OK is returned on the call, the names associated with the current program remain unchanged. 2. Any of the names associated with the program at the time an Accept_Conversation or Accept_Incoming call is issued can be used to satisfy the call. 3. If the program has an outstanding Accept_Incoming or Accept_Conversation call when it issues Specify_Local_TP_Name, the names used to satisfy the outstanding Accept_Incoming or Accept_Conversation are not affected. The newly specified name will be added to the names used to satisfy subsequent Accept_Incoming or Accept_Conversation calls. -------------------------------------- Test_Request_To_Send_Received (CMTRTS) Test_Request_To_Send_Received (CMTRTS) is used by a program to determine whether a request-to-send or allocate-confirmed notification has been received from the remote program for the specified conversation. NOTE: The Test_Request_To_Send_Received call has meaning only when a half-duplex conversation is being used. Format +--------------------------------------------------------------------+ | CALL CMTRTS(conversation_ID, | | control_information_received, | | return_code) | +--------------------------------------------------------------------+ Parameters conversation_ID (input) Specifies the conversation identifier. control_information_received (output) Specifies the variable containing an indication of whether or not control information has been received. The control_information_received variable can have one of the following values: o CM_NO_CONTROL_INFO_RECEIVED Indicates that no control information was received. o CM_REQ_TO_SEND_RECEIVED The local program received a request-to-send notification from the remote program. The remote program issued Request_To_Send, requesting the local program's end of the conversation to enter RECEIVE state, which would place the remote program's end of the conversation in SEND state. See the description of the Request_To_Send (CMRTS) call for further discussion of the local program's possible responses. o CM_ALLOCATE_CONFIRMED (OSI TP CRM only) The local program received confirmation of the remote program's acceptance of the conversation. o CM_ALLOCATE_CONFIRMED_WITH_DATA (OSI TP CRM only) The local program received confirmation of the remote program's acceptance of the conversation. The local program may now issue an Extract_Initialization_Data (CMEID) call to receive the initialization data. o CM_ALLOCATE_REJECTED_WITH_DATA (OSI TP CRM only) The remote program rejected the conversation. The local program may now issue an Extract_Initialization_Data (CMEID) call to receive the initialization data. This value will be returned with a return code of CM_OK. The program will receive a CM_DEALLOCATED_ABEND return code on a later call on the conversation. o CM_EXPEDITED_DATA_AVAILABLE (LU 6.2 CRM only) Expedited data is available to be received. o CM_RTS_RCVD_AND_EXP_DATA_AVAIL (LU 6.2 CRM only) The local program received a request-to-send notification from the remote program and expedited data is available to be received. NOTES: 1. If return_code is set to CM_PROGRAM_PARAMETER_CHECK or CM_PROGRAM_STATE_CHECK, the value contained in control_information_received has no meaning. 2. When more than one piece of control information is available to be returned to the program, it will be returned in the following order: o CM_ALLOCATE_CONFIRMED, CM_ALLOCATE_CONFIRMED_WITH_DATA, or CM_ALLOCATE_REJECTED_WITH_DATA o CM_RTS_RCVD_AND_EXP_DATA_AVAIL o CM_REQ_TO_SEND_RECEIVED o CM_EXPEDITED_DATA_AVAILABLE o CM_NO_CONTROL_INFO_RECEIVED return_code (output) Specifies the result of the call execution. The return_code variable can have one of the following values: o CM_OK o CM_PROGRAM_STATE_CHECK - This value indicates that the conversation is not in SEND, RECEIVE, SEND-PENDING, DEFER-RECEIVE, or DEFER-DEALLOCATE state. - For a conversation with sync_level set to CM_SYNC_POINT or CM_SYNC_POINT_NO_CONFIRM, the conversation's context is in the BACKOUT-REQUIRED condition. The Test_Request_To_Send_Received call is not allowed for this conversation while its context is in this condition. o CM_PROGRAM_PARAMETER_CHECK This value indicates one of the following: - The conversation_ID specifies an unassigned conversation identifier. - The send_receive_mode of the conversation is CM_FULL_DUPLEX. o CM_OPERATION_NOT_ACCEPTED This value indicates that the program has chosen conversation-level non-blocking for the conversation and a previous call operation is still in progress. o CM_PRODUCT_SPECIFIC_ERROR State Changes This call does not cause a state change. Usage Notes 1. When the local system receives a request-to-send or allocate-confirmed notification, it retains the notification until the local program issues a call (such as Test_Request_To_Send_Received) with the control_information_received parameter. It will retain only one request-to-send or allocate-confirmed notification at a time (per conversation). Additional notifications are discarded until the retained notification is indicated to the local program. Therefore, a remote program may issue the Request_To_Send call more times than are indicated to the local program. When the local system receives expedited data from the partner system, it is indicated on the calls that have the control_information_received parameter until the expedited data is actually received by the program. 2. After the retained notification, other than the expedited data notification, is indicated to the local program through the control_information_received parameter, the local system discards the notification. 3. NOTE TO IMPLEMENTERS: A request-to-send or allocate-confirmed notification can be reported on this call (not associated with any queue), on the Send_Expedited_Data call (associated with the Expedited-Send queue), and on the Receive_Expedited_Data call (associated with the Expedited-Receive queue). When the program uses queue-level non-blocking, more than one of these calls may be executed simultaneously. An implementation should report the notification to the program only once, through one of these calls. 4. A program should not rely solely on this call to test whether expedited data is available. Expedited data may be available in the CRM, but the implementation of the CPIC layer may not always be able to indicate this to the program on this call. To test for the availability of expedited data, the program should issue Receive_Expedited_Data with the expedited_receive_type set to CM_RECEIVE_IMMEDIATE. ---------------------------- Wait_For_Completion (CMWCMP) Wait_For_Completion (CMWCMP) is used to wait for completion of one or more outstanding operations represented in a specified outstanding-operation-ID (OOID) list. Format +--------------------------------------------------------------------+ | | | CALL CMWCMP(OOID_list, | | OOID_list_count, | | timeout, | | completed_op_index_list, | | completed_op_count, | | user_field_list, | | return_code) | +--------------------------------------------------------------------+ Parameters OOID_list (input) Specifies a list of OOIDs representing the outstanding operations for which completion is expected. OOID_list_count (input) Specifies the number of OOIDs contained in OOID_list. timeout (input) Specifies the amount of time in microseconds that the program is willing to wait for completion of an operation. Valid timeout values are zero or any greater integer number. completed_op_index_list (output) Specifies a list of indexes corresponding to the OOIDs in OOID_list for which the associated operations have completed. The index is the position of an OOID in OOID_list, beginning with 1. completed_op_count (output) Specifies the number of indexes contained in completed_op_index_list, or the number of user fields contained in user_field_list, or both. user_field_list (output) Specifies a list of user fields corresponding to the completed operations. return_code (output) Specifies the result of the call execution. The return_code variable can have one of the following values: o CM_OK o CM_CALL_NOT_SUPPORTED o CM_PROGRAM_PARAMETER_CHECK This value indicates one of the following: - The OOID_list_count specifies a value less than 1. - The number of OOIDs in OOID_list is less than the value specified in OOID_list_count. - The OOID_list contains an unassigned OOID. - The timeout specifies a value less than zero. o CM_PROGRAM_STATE_CHECK This value indicates that there is no outstanding operation associated with any of the OOIDs specified in OOID_list. o CM_UNSUCCESSFUL This value indicates that the specified timeout value has elapsed and none of the operations specified in OOID_list has completed. o CM_PRODUCT_SPECIFIC_ERROR State Changes This call does not cause a state change. Usage Notes 1. Unless the return_code indicates CM_OK, the values of all other parameters on this call have no meaning. 2. The call returns the OOID corresponding to a completed operation only once. At that time, all information about the completed operation is purged from the associated queue. If the program issues the call to check the status of the same operation again, the OOID will not be returned. 3. When the call returns a completion operation to the program, the return code of the completion operation can be found in the return_code parameter on the completed call. 4. A special timeout value of zero can be used to check the status of all the operations whose OOIDs are specified in the OOID_list parameter. The call specified in this way incurs no blocking. 5. The program can replace a previously returned OOID in the OOID_list parameter with a null OOID (integer zero) and continue to use the same list for the following Wait_For_Completion call. The null OOID is not associated with any outstanding operation. 6. There is a one-to-one correspondence between elements of the completed-operation-index list and those of the user-field list. Hence, the size of the user-field list equals that of the completed-operation-index list. 7. The program should allocate the same amount of storage for the completed-operation-index list and user-field list as it does for the outstanding-operation-ID list. If there is not enough storage allocated, the program may lose some OOIDs and user fields that correspond to the completed operations. 8. In a multi-threaded environment, concurrent Wait_For_Completion operations can occur. If an OOID is specified on more than one Wait_For_Completion call, the OOID is returned on only one of the Wait_For_Completion calls when the corresponding outstanding operation completes. 9. NOTE TO IMPLEMENTERS: After returning CM_OPERATION_INCOMPLETE to the program, an implementation should not fill the return code for the outstanding operation before the program checks the return-code value. It is recommended that implementations fill the return code only when the program issues a Wait_For_Completion call for the outstanding operation. ------------------------------ Wait_For_Conversation (CMWAIT) A program must use the Wait_For_Conversation (CMWAIT) call to wait for the completion of an outstanding operation on a conversation using conversation-level non-blocking. An outstanding operation is indicated when the CM_OPERATION_INCOMPLETE return_code value is returned on an Accept_Incoming, Allocate, Confirm, Confirmed, Deallocate, Flush, Prepare_To_Receive, Receive, Receive_Expedited_Data, Request_To_Send, Send_Data, Send_Error, or Send_Expedited_Data call. This can occur when the processing_mode conversation characteristic is set to CM_NON_BLOCKING and the requested operation cannot complete immediately. Format +--------------------------------------------------------------------+ | CALL CMWAIT(conversation_ID, | | conversation_return_code, | | return_code) | +--------------------------------------------------------------------+ Parameters conversation_ID (output) Specifies the variable containing the conversation identifier for the completed operation. NOTE: Unless return_code is set to CM_OK, the value contained in conversation_ID is not meaningful. conversation_return_code (output) Specifies the variable containing the return code for the completed operation. The meaning of this return code depends upon the operation that was started. conversation_return_code can have one of the following values: o CM_OK o CM_ALLOCATE_FAILURE_NO_RETRY o CM_ALLOCATE_FAILURE_RETRY o CM_BUFFER_TOO_SMALL o CM_CALL_NOT_SUPPORTED o CM_CONV_DEALLOC_AFTER_SYNCPT o CM_CONVERSATION_ENDING o CM_CONVERSATION_TYPE_MISMATCH o CM_DEALLOC_CONFIRM_REJECT o CM_DEALLOCATED_ABEND o CM_DEALLOCATED_ABEND_BO o CM_DEALLOCATED_ABEND_SVC o CM_DEALLOCATED_ABEND_SVC_BO o CM_DEALLOCATED_ABEND_TIMER o CM_DEALLOCATED_ABEND_TIMER_BO o CM_DEALLOCATED_NORMAL o CM_DEALLOCATED_NORMAL_BO o CM_EXP_DATA_NOT_SUPPORTED o CM_INCLUDE_PARTNER_REJECT_BO o CM_PIP_NOT_SPECIFIED_CORRECTLY o CM_PRODUCT_SPECIFIC_ERROR o CM_PROGRAM_ERROR_NO_TRUNC o CM_PROGRAM_ERROR_PURGING o CM_PROGRAM_ERROR_TRUNC o CM_RESOURCE_FAIL_NO_RETRY_BO o CM_RESOURCE_FAILURE_NO_RETRY o CM_RESOURCE_FAILURE_RETRY o CM_RESOURCE_FAILURE_RETRY_BO o CM_RETRY_LIMIT_EXCEEDED o CM_SECURITY_MUTUAL_FAILED o CM_SECURITY_NOT_SUPPORTED o CM_SECURITY_NOT_VALID o CM_SEND_RCV_MODE_NOT_SUPPORTED o CM_SVC_ERROR_NO_TRUNC o CM_SVC_ERROR_PURGING o CM_SVC_ERROR_TRUNC o CM_SYNC_LVL_NOT_SUPPORTED_PGM o CM_SYNC_LVL_NOT_SUPPORTED_SYS o CM_TAKE_BACKOUT o CM_TP_NOT_AVAILABLE_NO_RETRY o CM_TP_NOT_AVAILABLE_RETRY o CM_TPN_NOT_RECOGNIZED NOTE: Unless return_code is set to CM_OK, the value contained in conversation_return_code is not meaningful. return_code (output) Specifies the result of the Wait_For_Conversation call execution. The return_code variable can have one of the following values: o CM_OK This value indicates that an outstanding operation has completed and that the conversation_ID and conversation_return_code have been returned. o CM_SYSTEM_EVENT This value indicates that, rather than an outstanding operation on a conversation, an event (such as a signal) recognized by the program has occurred. The Wait_For_Conversation call returns this return code value to allow the program to decide whether to reissue the Wait_For_Conversation or to perform other processing. o CM_PROGRAM_STATE_CHECK This value indicates that there were no conversation-level outstanding operations for the program. o CM_PRODUCT_SPECIFIC_ERROR State Changes When return_code is set to CM_OK, the conversation identified by conversation_ID may change state. The new state is determined by the operation that completed, the return code for that operation (the conversation_return_code value), and the other factors that affect state transitions. Usage Notes 1. Wait_For_Conversation waits for the completion of any outstanding operation on any conversation using conversation-level non-blocking. It is the responsibility of the program to keep track of the operation in progress on each conversation in order to be able to interpret properly the conversation_return_code value. 2. In a multi-threaded environment, concurrent operations may occur. A Wait_For_Conversation call waits for any operation, on any conversation using conversation-level non-blocking, that either is already outstanding or becomes outstanding during execution of the Wait_For_Conversation call. In case of concurrent Wait_For_Conversation operations, completion of an outstanding operation is indicated on one Wait_For_Conversation call only. NOTE TO IMPLEMENTERS: An implementation should serialize execution of the concurrent Wait_For_Conversation operations to prevent any Wait_For_Conversation call from hanging forever. 3. It is the responsibility of the event-handling portion of the program to record sufficient information for the program to decide how to proceed on receipt of the CM_SYSTEM_EVENT return code. 4. The program's current context is not changed as a result of the completion of a Wait_For_Conversation call. 5. This call applies only to conversations using conversation-level non-blocking support. ---------------------------------------------------------------------------------------------------------------------------------- Appendix A. Variables and Characteristics For the variables and characteristics used throughout this book, this appendix provides the following items: o A chart showing the values that variables and characteristics can take. The valid pseudonyms and corresponding integer values are provided for each variable and characteristic. o The character sets used by CPI Communications. o The data definitions for types and lengths of all CPI Communications characteristics and variables. ----------------------------- Pseudonyms and Integer Values As explained in "Naming Conventions--Calls, Characteristics, Variables, and Values," the values for variables and conversation characteristics are shown as pseudonyms rather than integer values. For example, instead of stating that the variable return_code is set to an integer value of 0, the book shows the return_code being set to a pseudonym value of CM_OK. Table 19 provides a mapping from valid pseudonyms to integer values for each variable and characteristic. Pseudonyms can also be used for integer values in program code by making use of equate or define statements. CPI Communications provides sample pseudonym files for several programming languages in Appendix E, "Pseudonym Files" on page 2. See Appendix G, "Sample Programs" on page 3 for an example of how a pseudonym file is used by a COBOL program. NOTE: Because the return_code variable is used for all CPI Communications calls, Appendix B, "Return Codes and Secondary Information" provides a more detailed description of its values, in addition to the list of values provided here. +---------------------------------------------------------------------------+ | Table 19. Variables/Characteristics and Their Possible Values | +---------------------------+--------------------------------------+--------+ | VARIABLE OR | PSEUDONYM VALUES | INTEGER| | CHARACTERISTIC NAMES | | VALUES | +---------------------------+--------------------------------------+--------+ | AE_qualifier_format | CM_DN | 0 | | +--------------------------------------+--------+ | | CM_OID | 1 | | +--------------------------------------+--------+ | +--------------------------------------+--------+ | +--------------------------------------+--------+ +---------------------------+--------------------------------------+--------+ | | | | +---------------------------+--------------------------------------+--------+ | allocate_confirm | CM_ALLOCATE_NO_CONFIRM | 0 | | +--------------------------------------+--------+ | | CM_ALLOCATE_CONFIRM | 1 | | +--------------------------------------+--------+ | +--------------------------------------+--------+ | +--------------------------------------+--------+ +---------------------------+--------------------------------------+--------+ | | | | +---------------------------+--------------------------------------+--------+ | AP_title_format | CM_DN | 0 | | +--------------------------------------+--------+ | | CM_OID | 1 | | +--------------------------------------+--------+ | +--------------------------------------+--------+ | +--------------------------------------+--------+ +---------------------------+--------------------------------------+--------+ | | | | +---------------------------+--------------------------------------+--------+ | begin_transaction | CM_BEGIN_IMPLICIT | 0 | | +--------------------------------------+--------+ | | CM_BEGIN_EXPLICIT | 1 | | +--------------------------------------+--------+ | +--------------------------------------+--------+ | +--------------------------------------+--------+ +---------------------------+--------------------------------------+--------+ | | | | +---------------------------+--------------------------------------+--------+ | call_id (1) | CM_CMACCI | 1 | | +--------------------------------------+--------+ | | CM_CMACCP | 2 | | +--------------------------------------+--------+ | | CM_CMALLC | 3 | | +--------------------------------------+--------+ | | CM_CMCANC | 4 | | +--------------------------------------+--------+ | | CM_CMCFM | 5 | | +--------------------------------------+--------+ | | CM_CMCFMD | 6 | | +--------------------------------------+--------+ | | CM_CMCNVI | 7 | | +--------------------------------------+--------+ | | CM_CMCNVO | 8 | | +--------------------------------------+--------+ | | CM_CMDEAL | 9 | | +--------------------------------------+--------+ | | CM_CMDFDE | 10 | | +--------------------------------------+--------+ | | CM_CMEACN | 11 | | +--------------------------------------+--------+ | | CM_CMEAEQ | 12 | | +--------------------------------------+--------+ | | CM_CMEAPT | 13 | | +--------------------------------------+--------+ | | CM_CMECS | 14 | | +--------------------------------------+--------+ | | CM_CMECT | 15 | | +--------------------------------------+--------+ | | CM_CMECTX | 16 | | +--------------------------------------+--------+ | | CM_CMEID | 17 | | +--------------------------------------+--------+ | | CM_CMEMBS | 18 | | +--------------------------------------+--------+ | | CM_CMEMN | 19 | | +--------------------------------------+--------+ | | CM_CMEPID | 20 | | +--------------------------------------+--------+ | | CM_CMEPLN | 21 | +---------------------------+--------------------------------------+--------+ | | CM_CMESI | 22 | | +--------------------------------------+--------+ | | CM_CMESL | 23 | | +--------------------------------------+--------+ | | CM_CMESRM | 24 | | +--------------------------------------+--------+ | | CM_CMESUI | 25 | | +--------------------------------------+--------+ | | CM_CMETC | 26 | | +--------------------------------------+--------+ | | CM_CMETPN | 27 | | +--------------------------------------+--------+ | | CM_CMFLUS | 28 | | +--------------------------------------+--------+ | | CM_CMINCL | 29 | | +--------------------------------------+--------+ | | CM_CMINIC | 30 | | +--------------------------------------+--------+ | | CM_CMINIT | 31 | | +--------------------------------------+--------+ | | CM_CMPREP | 32 | | +--------------------------------------+--------+ | | CM_CMPTR | 33 | | +--------------------------------------+--------+ | | CM_CMRCV | 34 | | +--------------------------------------+--------+ | | CM_CMRCVX | 35 | | +--------------------------------------+--------+ | | CM_CMRLTP | 36 | | +--------------------------------------+--------+ | | CM_CMRTS | 37 | | +--------------------------------------+--------+ | | CM_CMSAC | 38 | | +--------------------------------------+--------+ | | CM_CMSACN | 39 | | +--------------------------------------+--------+ | | CM_CMSAEQ | 40 | | +--------------------------------------+--------+ | | CM_CMSAPT | 41 | | +--------------------------------------+--------+ | | CM_CMSBT | 42 | +---------------------------+--------------------------------------+--------+ | | CM_CMSCSP | 43 | | +--------------------------------------+--------+ | | CM_CMSCST | 44 | | +--------------------------------------+--------+ | | CM_CMSCSU | 45 | | +--------------------------------------+--------+ | | CM_CMSCT | 46 | | +--------------------------------------+--------+ | | CM_CMSCU | 47 | | +--------------------------------------+--------+ | | CM_CMSDT | 48 | | +--------------------------------------+--------+ | | CM_CMSED | 49 | | +--------------------------------------+--------+ | | CM_CMSEND | 50 | | +--------------------------------------+--------+ | | CM_CMSERR | 51 | | +--------------------------------------+--------+ | | CM_CMSF | 52 | | +--------------------------------------+--------+ | | CM_CMSID | 53 | | +--------------------------------------+--------+ | | CM_CMSLD | 54 | | +--------------------------------------+--------+ | | CM_CMSLTP | 55 | | +--------------------------------------+--------+ | | CM_CMSMN | 56 | | +--------------------------------------+--------+ | | CM_CMSNDX | 57 | | +--------------------------------------+--------+ | | CM_CMSPDP | 58 | | +--------------------------------------+--------+ | | CM_CMSPID | 59 | | +--------------------------------------+--------+ | | CM_CMSPLN | 60 | | +--------------------------------------+--------+ | | CM_CMSPM | 61 | | +--------------------------------------+--------+ | | CM_CMSPTR | 62 | | +--------------------------------------+--------+ | | CM_CMSQCF | 63 | +---------------------------+--------------------------------------+--------+ | | CM_CMSQPM | 64 | | +--------------------------------------+--------+ | | CM_CMSRC | 65 | | +--------------------------------------+--------+ | | CM_CMSRT | 66 | | +--------------------------------------+--------+ | | CM_CMSSL | 67 | | +--------------------------------------+--------+ | | CM_CMSSRM | 68 | | +--------------------------------------+--------+ | | CM_CMSST | 69 | | +--------------------------------------+--------+ | | CM_CMSTC | 70 | | +--------------------------------------+--------+ | | CM_CMSTPN | 71 | | +--------------------------------------+--------+ | | CM_CMTRTS | 72 | | +--------------------------------------+--------+ | | CM_CMWAIT | 73 | | +--------------------------------------+--------+ | | CM_CMWCMP | 74 | +---------------------------+--------------------------------------+--------+ | | | | +---------------------------+--------------------------------------+--------+ | confirmation_urgency | CM_CONFIRMATION_NOT_URGENT | 0 | | +--------------------------------------+--------+ | | CM_CONFIRMATION_URGENT | 1 | | +--------------------------------------+--------+ | +--------------------------------------+--------+ | +--------------------------------------+--------+ +---------------------------+--------------------------------------+--------+ | | | | +---------------------------+--------------------------------------+--------+ | control_information_receiv|dCM_NO_CONTROL_INFO_RECEIVED | 0 | | +--------------------------------------+--------+ | | CM_REQ_TO_SEND_RECEIVED | 1 | | +--------------------------------------+--------+ | | CM_ALLOCATE_CONFIRMED | 2 | | +--------------------------------------+--------+ | | CM_ALLOCATE_CONFIRMED_WITH_DATA | 3 | | +--------------------------------------+--------+ | | CM_ALLOCATE_REJECTED_WITH_DATA | 4 | | +--------------------------------------+--------+ | | CM_EXPEDITED_DATA_AVAILABLE | 5 | | +--------------------------------------+--------+ | | CM_RTS_RCVD_AND_EXP_DATA_AVAIL | 6 | +---------------------------+--------------------------------------+--------+ | | | | +---------------------------+--------------------------------------+--------+ | conversation_queue | CM_INITIALIZATION_QUEUE | 0 | | +--------------------------------------+--------+ | | CM_SEND_QUEUE | 1 | | +--------------------------------------+--------+ | | CM_RECEIVE_QUEUE | 2 | | +--------------------------------------+--------+ | | CM_SEND_RECEIVE_QUEUE | 3 | | +--------------------------------------+--------+ | | CM_EXPEDITED_SEND_QUEUE | 4 | | +--------------------------------------+--------+ | | CM_EXPEDITED_RECEIVE_QUEUE | 5 | +---------------------------+--------------------------------------+--------+ | | | | +---------------------------+--------------------------------------+--------+ | conversation_return_code | See return_code. | | +---------------------------+--------------------------------------+--------+ | | | | +---------------------------+--------------------------------------+--------+ | conversation_security_type| CM_SECURITY_NONE | 0 | | +--------------------------------------+--------+ | | CM_SECURITY_SAME | 1 | | +--------------------------------------+--------+ | | CM_SECURITY_PROGRAM | 2 | | +--------------------------------------+--------+ | | CM_SECURITY_DISTRIBUTED | 3 | | +--------------------------------------+--------+ | | CM_SECURITY_MUTUAL | 4 | | +--------------------------------------+--------+ | | CM_SECURITY_PROGRAM_STRONG | 5 | +---------------------------+--------------------------------------+--------+ | | | | +---------------------------+--------------------------------------+--------+ | conversation_state | CM_INITIALIZE_STATE | 2 | | +--------------------------------------+--------+ | | CM_SEND_STATE | 3 | | +--------------------------------------+--------+ | | CM_RECEIVE_STATE | 4 | | +--------------------------------------+--------+ | | CM_SEND_PENDING_STATE | 5 | | +--------------------------------------+--------+ | | CM_CONFIRM_STATE | 6 | | +--------------------------------------+--------+ | | CM_CONFIRM_SEND_STATE | 7 | | +--------------------------------------+--------+ | | CM_CONFIRM_DEALLOCATE_STATE | 8 | | +--------------------------------------+--------+ | | CM_DEFER_RECEIVE_STATE | 9 | | +--------------------------------------+--------+ | | CM_DEFER_DEALLOCATE_STATE | 10 | | +--------------------------------------+--------+ | | CM_SYNC_POINT_STATE | 11 | | +--------------------------------------+--------+ | | CM_SYNC_POINT_SEND_STATE | 12 | | +--------------------------------------+--------+ | | CM_SYNC_POINT_DEALLOCATE_STATE | 13 | | +--------------------------------------+--------+ | | CM_INITIALIZE_INCOMING_STATE | 14 | | +--------------------------------------+--------+ | | CM_SEND_ONLY_STATE | 15 | | +--------------------------------------+--------+ | | CM_RECEIVE_ONLY_STATE | 16 | | +--------------------------------------+--------+ | | CM_SEND_RECEIVE_STATE | 17 | | +--------------------------------------+--------+ | | CM_PREPARED_STATE | 18 | +---------------------------+--------------------------------------+--------+ | | | | +---------------------------+--------------------------------------+--------+ | conversation_type | CM_BASIC_CONVERSATION | 0 | | +--------------------------------------+--------+ | | CM_MAPPED_CONVERSATION | 1 | | +--------------------------------------+--------+ | +--------------------------------------+--------+ | +--------------------------------------+--------+ +---------------------------+--------------------------------------+--------+ | | | | +---------------------------+--------------------------------------+--------+ | data_received | CM_NO_DATA_RECEIVED | 0 | | +--------------------------------------+--------+ | | CM_DATA_RECEIVED | 1 | | +--------------------------------------+--------+ | | CM_COMPLETE_DATA_RECEIVED | 2 | | +--------------------------------------+--------+ | | CM_INCOMPLETE_DATA_RECEIVED | 3 | +---------------------------+--------------------------------------+--------+ | | | | +---------------------------+--------------------------------------+--------+ | deallocate_type | CM_DEALLOCATE_SYNC_LEVEL | 0 | | +--------------------------------------+--------+ | | CM_DEALLOCATE_FLUSH | 1 | | +--------------------------------------+--------+ | | CM_DEALLOCATE_CONFIRM | 2 | | +--------------------------------------+--------+ | | CM_DEALLOCATE_ABEND | 3 | +---------------------------+--------------------------------------+--------+ | | | | +---------------------------+--------------------------------------+--------+ | +--------------------------------------+--------+ | +--------------------------------------+--------+ | +--------------------------------------+--------+ | +--------------------------------------+--------+ +---------------------------+--------------------------------------+--------+ | directory_encoding | CM_DEFAULT_ENCODING | 0 | | +--------------------------------------+--------+ | | CM_UNICODE_ENCODING | 1 | | +--------------------------------------+--------+ | +--------------------------------------+--------+ | +--------------------------------------+--------+ +---------------------------+--------------------------------------+--------+ | | | | +---------------------------+--------------------------------------+--------+ | directory_syntax | CM_DEFAULT_SYNTAX | 0 | | +--------------------------------------+--------+ | | CM_DCE_SYNTAX | 1 | | +--------------------------------------+--------+ | | CM_XDS_SYNTAX | 2 | | +--------------------------------------+--------+ | | CM_NDS_SYNTAX | 3 | +---------------------------+--------------------------------------+--------+ | | | | +---------------------------+--------------------------------------+--------+ | error_direction | CM_RECEIVE_ERROR | 0 | | +--------------------------------------+--------+ | | CM_SEND_ERROR | 1 | | +--------------------------------------+--------+ | +--------------------------------------+--------+ | +--------------------------------------+--------+ +---------------------------+--------------------------------------+--------+ | | | | +---------------------------+--------------------------------------+--------+ | expedited_receive_type | CM_RECEIVE_AND_WAIT | 0 | | +--------------------------------------+--------+ | | CM_RECEIVE_IMMEDIATE | 1 | | +--------------------------------------+--------+ | +--------------------------------------+--------+ | +--------------------------------------+--------+ +---------------------------+--------------------------------------+--------+ | | | | +---------------------------+--------------------------------------+--------+ | fill | CM_FILL_LL | 0 | | +--------------------------------------+--------+ | | CM_FILL_BUFFER | 1 | | +--------------------------------------+--------+ | +--------------------------------------+--------+ | +--------------------------------------+--------+ +---------------------------+--------------------------------------+--------+ | | | | +---------------------------+--------------------------------------+--------+ | partner_ID_scope | CM_EXPLICIT | 0 | | +--------------------------------------+--------+ | | CM_REFERENCE | 1 | | +--------------------------------------+--------+ | +--------------------------------------+--------+ | +--------------------------------------+--------+ +---------------------------+--------------------------------------+--------+ | | | | +---------------------------+--------------------------------------+--------+ | partner_ID_type | CM_DISTINGUISHED_NAME | 0 | | +--------------------------------------+--------+ | | CM_LOCAL_DISTINGUISHED_NAME | 1 | | +--------------------------------------+--------+ | | CM_PROGRAM_FUNCTION_ID | 2 | | +--------------------------------------+--------+ | | CM_OSI_TPSU_TITLE_OID | 3 | | +--------------------------------------+--------+ | | CM_PROGRAM_BINDING | 4 | +---------------------------+--------------------------------------+--------+ | | | | +---------------------------+--------------------------------------+--------+ | prepare_data_permitted | CM_PREPARE_DATA_NOT_PERMITTED | 0 | | +--------------------------------------+--------+ | | CM_PREPARE_DATA_PERMITTED | 1 | | +--------------------------------------+--------+ | +--------------------------------------+--------+ | +--------------------------------------+--------+ +---------------------------+--------------------------------------+--------+ | | | | +---------------------------+--------------------------------------+--------+ | prepare_to_receive_type | CM_PREP_TO_RECEIVE_SYNC_LEVEL | 0 | | +--------------------------------------+--------+ | | CM_PREP_TO_RECEIVE_FLUSH | 1 | | +--------------------------------------+--------+ | | CM_PREP_TO_RECEIVE_CONFIRM | 2 | +---------------------------+--------------------------------------+--------+ | | | | +---------------------------+--------------------------------------+--------+ | processing_mode | CM_BLOCKING | 0 | | +--------------------------------------+--------+ | | CM_NON_BLOCKING | 1 | | +--------------------------------------+--------+ | +--------------------------------------+--------+ | +--------------------------------------+--------+ +---------------------------+--------------------------------------+--------+ | | | | +---------------------------+--------------------------------------+--------+ | queue_processing_mode | CM_BLOCKING | 0 | | +--------------------------------------+--------+ | | CM_NON_BLOCKING | 1 | | +--------------------------------------+--------+ | +--------------------------------------+--------+ | +--------------------------------------+--------+ +---------------------------+--------------------------------------+--------+ | | | | +---------------------------+--------------------------------------+--------+ | receive_type | CM_RECEIVE_AND_WAIT | 0 | | +--------------------------------------+--------+ | | CM_RECEIVE_IMMEDIATE | 1 | | +--------------------------------------+--------+ | +--------------------------------------+--------+ | +--------------------------------------+--------+ +---------------------------+--------------------------------------+--------+ | | | | +---------------------------+--------------------------------------+--------+ | request_to_send_received | CM_REQ_TO_SEND_NOT_RECEIVED | 0 | | (2) +--------------------------------------+--------+ | | CM_REQ_TO_SEND_RECEIVED | 1 | | +--------------------------------------+--------+ | +--------------------------------------+--------+ | +--------------------------------------+--------+ +---------------------------+--------------------------------------+--------+ | | | | +---------------------------+--------------------------------------+--------+ | return_code and | CM_OK | 0 | | conversation_return_code +--------------------------------------+--------+ | | CM_ALLOCATE_FAILURE_NO_RETRY | 1 | | +--------------------------------------+--------+ | | CM_ALLOCATE_FAILURE_RETRY | 2 | | +--------------------------------------+--------+ | | CM_CONVERSATION_TYPE_MISMATCH | 3 | | +--------------------------------------+--------+ | | CM_PIP_NOT_SPECIFIED_CORRECTLY | 5 | | +--------------------------------------+--------+ | | CM_SECURITY_NOT_VALID | 6 | | +--------------------------------------+--------+ | | CM_SYNC_LVL_NOT_SUPPORTED_SYS | 7 | | +--------------------------------------+--------+ | | CM_SYNC_LVL_NOT_SUPPORTED_PGM | 8 | | +--------------------------------------+--------+ | | CM_TPN_NOT_RECOGNIZED | 9 | | +--------------------------------------+--------+ | | CM_TP_NOT_AVAILABLE_NO_RETRY | 10 | | +--------------------------------------+--------+ | | CM_TP_NOT_AVAILABLE_RETRY | 11 | | +--------------------------------------+--------+ | | CM_DEALLOCATED_ABEND | 17 | | +--------------------------------------+--------+ | | CM_DEALLOCATED_NORMAL | 18 | | +--------------------------------------+--------+ | | CM_PARAMETER_ERROR | 19 | | +--------------------------------------+--------+ | | CM_PRODUCT_SPECIFIC_ERROR | 20 | | +--------------------------------------+--------+ | | CM_PROGRAM_ERROR_NO_TRUNC | 21 | | +--------------------------------------+--------+ | | CM_PROGRAM_ERROR_PURGING | 22 | | +--------------------------------------+--------+ | | CM_PROGRAM_ERROR_TRUNC | 23 | | +--------------------------------------+--------+ | | CM_PROGRAM_PARAMETER_CHECK | 24 | | +--------------------------------------+--------+ | | CM_PROGRAM_STATE_CHECK | 25 | | +--------------------------------------+--------+ | | CM_RESOURCE_FAILURE_NO_RETRY | 26 | +---------------------------+--------------------------------------+--------+ | | CM_RESOURCE_FAILURE_RETRY | 27 | | +--------------------------------------+--------+ | | CM_UNSUCCESSFUL | 28 | | +--------------------------------------+--------+ | | CM_DEALLOCATED_ABEND_SVC | 30 | | +--------------------------------------+--------+ | | CM_DEALLOCATED_ABEND_TIMER | 31 | | +--------------------------------------+--------+ | | CM_SVC_ERROR_NO_TRUNC | 32 | | +--------------------------------------+--------+ | | CM_SVC_ERROR_PURGING | 33 | | +--------------------------------------+--------+ | | CM_SVC_ERROR_TRUNC | 34 | | +--------------------------------------+--------+ | | CM_OPERATION_INCOMPLETE | 35 | | +--------------------------------------+--------+ | | CM_SYSTEM_EVENT | 36 | | +--------------------------------------+--------+ | | CM_OPERATION_NOT_ACCEPTED | 37 | | +--------------------------------------+--------+ | | CM_CONVERSATION_ENDING | 38 | | +--------------------------------------+--------+ | | CM_SEND_RCV_MODE_NOT_SUPPORTED | 39 | | +--------------------------------------+--------+ | | CM_BUFFER_TOO_SMALL | 40 | | +--------------------------------------+--------+ | | CM_EXP_DATA_NOT_SUPPORTED | 41 | | +--------------------------------------+--------+ | | CM_DEALLOC_CONFIRM_REJECT | 42 | | +--------------------------------------+--------+ | | CM_ALLOCATION_ERROR | 43 | | +--------------------------------------+--------+ | | CM_RETRY_LIMIT_EXCEEDED | 44 | | +--------------------------------------+--------+ | | CM_NO_SECONDARY_INFORMATION | 45 | | +--------------------------------------+--------+ | | CM_SECURITY_NOT_SUPPORTED | 46 | | +--------------------------------------+--------+ | | CM_SECURITY_MUTUAL_FAILED | 47 | | +--------------------------------------+--------+ | | CM_CALL_NOT_SUPPORTED | 48 | | +--------------------------------------+--------+ +---------------------------+--------------------------------------+--------+ | | CM_PARM_VALUE_NOT_SUPPORTED | 49 | | +--------------------------------------+--------+ | | CM_TAKE_BACKOUT | 100 | +---------------------------+--------------------------------------+--------+ | | CM_DEALLOCATED_ABEND_BO | 130 | | +--------------------------------------+--------+ | | CM_DEALLOCATED_ABEND_SVC_BO | 131 | | +--------------------------------------+--------+ | | CM_DEALLOCATED_ABEND_TIMER_BO | 132 | | +--------------------------------------+--------+ | | CM_RESOURCE_FAIL_NO_RETRY_BO | 133 | | +--------------------------------------+--------+ | | CM_RESOURCE_FAILURE_RETRY_BO | 134 | | +--------------------------------------+--------+ | | CM_DEALLOCATED_NORMAL_BO | 135 | | +--------------------------------------+--------+ | | CM_CONV_DEALLOC_AFTER_SYNCPT | 136 | | +--------------------------------------+--------+ | | CM_INCLUDE_PARTNER_REJECT_BO | 137 | +---------------------------+--------------------------------------+--------+ | | | | +---------------------------+--------------------------------------+--------+ | return_control | CM_WHEN_SESSION_ALLOCATED | 0 | | +--------------------------------------+--------+ | | CM_IMMEDIATE | 1 | | +--------------------------------------+--------+ | +--------------------------------------+--------+ | +--------------------------------------+--------+ +---------------------------+--------------------------------------+--------+ | | | | +---------------------------+--------------------------------------+--------+ | send_receive_mode | CM_HALF_DUPLEX | 0 | | +--------------------------------------+--------+ | | CM_FULL_DUPLEX | 1 | | +--------------------------------------+--------+ | +--------------------------------------+--------+ | +--------------------------------------+--------+ +---------------------------+--------------------------------------+--------+ | | | | +---------------------------+--------------------------------------+--------+ | send_type | CM_BUFFER_DATA | 0 | | +--------------------------------------+--------+ | | CM_SEND_AND_FLUSH | 1 | | +--------------------------------------+--------+ | | CM_SEND_AND_CONFIRM | 2 | | +--------------------------------------+--------+ | | CM_SEND_AND_PREP_TO_RECEIVE | 3 | | +--------------------------------------+--------+ | | CM_SEND_AND_DEALLOCATE | 4 | +---------------------------+--------------------------------------+--------+ | | | | +---------------------------+--------------------------------------+--------+ | status_received | CM_NO_STATUS_RECEIVED | 0 | | +--------------------------------------+--------+ | | CM_SEND_RECEIVED | 1 | | +--------------------------------------+--------+ | | CM_CONFIRM_RECEIVED | 2 | | +--------------------------------------+--------+ | | CM_CONFIRM_SEND_RECEIVED | 3 | | +--------------------------------------+--------+ | | CM_CONFIRM_DEALLOC_RECEIVED | 4 | | +--------------------------------------+--------+ | | CM_TAKE_COMMIT | 5 | | +--------------------------------------+--------+ | | CM_TAKE_COMMIT_SEND | 6 | | +--------------------------------------+--------+ | | CM_TAKE_COMMIT_DEALLOCATE | 7 | | +--------------------------------------+--------+ | | CM_TAKE_COMMIT_DATA_OK | 8 | | +--------------------------------------+--------+ | | CM_TAKE_COMMIT_SEND_DATA_OK | 9 | | +--------------------------------------+--------+ | | CM_TAKE_COMMIT_DEALLOC_DATA_OK | 10 | | +--------------------------------------+--------+ | | CM_PREPARE_OK | 11 | | +--------------------------------------+--------+ | | CM_JOIN_TRANSACTION | 12 | +---------------------------+--------------------------------------+--------+ | | | | +---------------------------+--------------------------------------+--------+ | sync_level | CM_NONE | 0 | | +--------------------------------------+--------+ | | CM_CONFIRM | 1 | | +--------------------------------------+--------+ | | CM_SYNC_POINT | 2 | | +--------------------------------------+--------+ | | CM_SYNC_POINT_NO_CONFIRM | 3 | +---------------------------+--------------------------------------+--------+ | | | | +---------------------------+--------------------------------------+--------+ | transaction_control | CM_CHAINED_TRANSACTIONS | 0 | | +--------------------------------------+--------+ | | CM_UNCHAINED_TRANSACTIONS | 1 | | +--------------------------------------+--------+ | +--------------------------------------+--------+ | +--------------------------------------+--------+ +---------------------------+--------------------------------------+--------+ +---------------------------+--------------------------------------+--------+ NOTES: 1. The call_ID values greater than 10000 are reserved for the product extension calls. 2. Early versions of CPI-C used the request_to_send_received variable. CPI-C 2.0 programs use control_information_received, which is an enhanced version of the request_to_send_received variable. -------------- Character Sets CPI Communications makes use of character strings composed of characters from one of the following character sets: o Character set 01134, which is composed of the uppercase letters A through Z and numerals 0-9. o Character set 00640, which is composed of the uppercase and lowercase letters A through Z, numerals 0-9, and 20 special characters. o Character set T61String, which is composed of the uppercase and lowercase letters A through Z, numerals 0-9, and many additional special characters. The most commonly used special characters are provided in Table 20. See CCITT Recommendation T.61 for other defined special characters. These character sets, along with EBCDIC hexadecimal and graphic representations, are provided in Table 20. See the SNA Formats manual (GA27-3136) for more information on character sets. +--------------------------------------------------------------------+ | Table 20. Character Sets T61String, 01134, and 00640 | +-------+--------+-------------------------+-------------------------+ | EBCDIC| GRAPHIC| DESCRIPTION | CHARACTER SET | | HEX | | +--------+--------+-------+ | CODE | | | T61- | 01134 | 00640 | | | | | STRING | | | +-------+--------+-------------------------+--------+--------+-------+ | 40 | | Blank | X | | X | +-------+--------+-------------------------+--------+--------+-------+ | 4A | [ | Left square bracket | X | | | +-------+--------+-------------------------+--------+--------+-------+ | 4B | . | Period | X | | X | +-------+--------+-------------------------+--------+--------+-------+ | 4C | < | Less than sign | X | | X | +-------+--------+-------------------------+--------+--------+-------+ | 4D | ( | Left parenthesis | X | | X | +-------+--------+-------------------------+--------+--------+-------+ | 4E | + | Plus sign | X | | X | +-------+--------+-------------------------+--------+--------+-------+ | 4F | ! | Exclamation mark | X | | | +-------+--------+-------------------------+--------+--------+-------+ | 50 | & | Ampersand | X | | X | +-------+--------+-------------------------+--------+--------+-------+ | 5A | ] | Right square bracket | X | | | +-------+--------+-------------------------+--------+--------+-------+ | 5C | * | Asterisk | X | | X | +-------+--------+-------------------------+--------+--------+-------+ | 5D | ) | Right parenthesis | X | | X | +-------+--------+-------------------------+--------+--------+-------+ | 5E | ; | Semicolon | X | | X | +-------+--------+-------------------------+--------+--------+-------+ | 60 | - | Dash | X | | X | +-------+--------+-------------------------+--------+--------+-------+ | 61 | / | Slash | X | | X | +-------+--------+-------------------------+--------+--------+-------+ | 6B | , | Comma | X | | X | +-------+--------+-------------------------+--------+--------+-------+ | 6C | % | Percent sign | X | | X | +-------+--------+-------------------------+--------+--------+-------+ | 6D | _ | Underscore | X | | X | +-------+--------+-------------------------+--------+--------+-------+ | 6E | > | Greater than sign | X | | X | +-------+--------+-------------------------+--------+--------+-------+ | 6F | ? | Question mark | X | | X | +-------+--------+-------------------------+--------+--------+-------+ | 7A | : | Colon | X | | X | +-------+--------+-------------------------+--------+--------+-------+ | 7C | @ | Commercial a (at sign) | X | | | +-------+--------+-------------------------+--------+--------+-------+ | 7D | ' | Single quote | X | | X | +-------+--------+-------------------------+--------+--------+-------+ | 7E | = | Equal sign | X | | X | +-------+--------+-------------------------+--------+--------+-------+ | 7F | " | Double quote | X | | X | +-------+--------+-------------------------+--------+--------+-------+ | 81 | a | Lowercase a | X | | X | +-------+--------+-------------------------+--------+--------+-------+ | 82 | b | Lowercase b | X | | X | +-------+--------+-------------------------+--------+--------+-------+ | 83 | c | Lowercase c | X | | X | +-------+--------+-------------------------+--------+--------+-------+ | 84 | d | Lowercase d | X | | X | +-------+--------+-------------------------+--------+--------+-------+ | 85 | e | Lowercase e | X | | X | +-------+--------+-------------------------+--------+--------+-------+ | 86 | f | Lowercase f | X | | X | +-------+--------+-------------------------+--------+--------+-------+ | 87 | g | Lowercase g | X | | X | +-------+--------+-------------------------+--------+--------+-------+ | 88 | h | Lowercase h | X | | X | +-------+--------+-------------------------+--------+--------+-------+ | 89 | i | Lowercase i | X | | X | +-------+--------+-------------------------+--------+--------+-------+ | 91 | j | Lowercase j | X | | X | +-------+--------+-------------------------+--------+--------+-------+ | 92 | k | Lowercase k | X | | X | +-------+--------+-------------------------+--------+--------+-------+ | 93 | l | Lowercase l | X | | X | +-------+--------+-------------------------+--------+--------+-------+ | 94 | m | Lowercase m | X | | X | +-------+--------+-------------------------+--------+--------+-------+ | 95 | n | Lowercase n | X | | X | +-------+--------+-------------------------+--------+--------+-------+ | 96 | o | Lowercase o | X | | X | +-------+--------+-------------------------+--------+--------+-------+ | 97 | p | Lowercase p | X | | X | +-------+--------+-------------------------+--------+--------+-------+ | 98 | q | Lowercase q | X | | X | +-------+--------+-------------------------+--------+--------+-------+ | 99 | r | Lowercase r | X | | X | +-------+--------+-------------------------+--------+--------+-------+ | A2 | s | Lowercase s | X | | X | +-------+--------+-------------------------+--------+--------+-------+ | A3 | t | Lowercase t | X | | X | +-------+--------+-------------------------+--------+--------+-------+ | A4 | u | Lowercase u | X | | X | +-------+--------+-------------------------+--------+--------+-------+ | A5 | v | Lowercase v | X | | X | +-------+--------+-------------------------+--------+--------+-------+ | A6 | w | Lowercase w | X | | X | +-------+--------+-------------------------+--------+--------+-------+ | A7 | x | Lowercase x | X | | X | +-------+--------+-------------------------+--------+--------+-------+ | A8 | y | Lowercase y | X | | X | +-------+--------+-------------------------+--------+--------+-------+ | A9 | z | Lowercase z | X | | X | +-------+--------+-------------------------+--------+--------+-------+ | BB | | | Vertical line | X | | | +-------+--------+-------------------------+--------+--------+-------+ | C1 | A | Uppercase A | X | X | X | +-------+--------+-------------------------+--------+--------+-------+ | C2 | B | Uppercase B | X | X | X | +-------+--------+-------------------------+--------+--------+-------+ | C3 | C | Uppercase C | X | X | X | +-------+--------+-------------------------+--------+--------+-------+ | C4 | D | Uppercase D | X | X | X | +-------+--------+-------------------------+--------+--------+-------+ | C5 | E | Uppercase E | X | X | X | +-------+--------+-------------------------+--------+--------+-------+ | C6 | F | Uppercase F | X | X | X | +-------+--------+-------------------------+--------+--------+-------+ | C7 | G | Uppercase G | X | X | X | +-------+--------+-------------------------+--------+--------+-------+ | C8 | H | Uppercase H | X | X | X | +-------+--------+-------------------------+--------+--------+-------+ | C9 | I | Uppercase I | X | X | X | +-------+--------+-------------------------+--------+--------+-------+ | D1 | J | Uppercase J | X | X | X | +-------+--------+-------------------------+--------+--------+-------+ | D2 | K | Uppercase K | X | X | X | +-------+--------+-------------------------+--------+--------+-------+ | D3 | L | Uppercase L | X | X | X | +-------+--------+-------------------------+--------+--------+-------+ | D4 | M | Uppercase M | X | X | X | +-------+--------+-------------------------+--------+--------+-------+ | D5 | N | Uppercase N | X | X | X | +-------+--------+-------------------------+--------+--------+-------+ | D6 | O | Uppercase O | X | X | X | +-------+--------+-------------------------+--------+--------+-------+ | D7 | P | Uppercase P | X | X | X | +-------+--------+-------------------------+--------+--------+-------+ | D8 | Q | Uppercase Q | X | X | X | +-------+--------+-------------------------+--------+--------+-------+ | D9 | R | Uppercase R | X | X | X | +-------+--------+-------------------------+--------+--------+-------+ | E2 | S | Uppercase S | X | X | X | +-------+--------+-------------------------+--------+--------+-------+ | E3 | T | Uppercase T | X | X | X | +-------+--------+-------------------------+--------+--------+-------+ | E4 | U | Uppercase U | X | X | X | +-------+--------+-------------------------+--------+--------+-------+ | E5 | V | Uppercase V | X | X | X | +-------+--------+-------------------------+--------+--------+-------+ | E6 | W | Uppercase W | X | X | X | +-------+--------+-------------------------+--------+--------+-------+ | E7 | X | Uppercase X | X | X | X | +-------+--------+-------------------------+--------+--------+-------+ | E8 | Y | Uppercase Y | X | X | X | +-------+--------+-------------------------+--------+--------+-------+ | E9 | Z | Uppercase Z | X | X | X | +-------+--------+-------------------------+--------+--------+-------+ | F0 | 0 | Zero | X | X | X | +-------+--------+-------------------------+--------+--------+-------+ | F1 | 1 | One | X | X | X | +-------+--------+-------------------------+--------+--------+-------+ | F2 | 2 | Two | X | X | X | +-------+--------+-------------------------+--------+--------+-------+ | F3 | 3 | Three | X | X | X | +-------+--------+-------------------------+--------+--------+-------+ | F4 | 4 | Four | X | X | X | +-------+--------+-------------------------+--------+--------+-------+ | F5 | 5 | Five | X | X | X | +-------+--------+-------------------------+--------+--------+-------+ | F6 | 6 | Six | X | X | X | +-------+--------+-------------------------+--------+--------+-------+ | F7 | 7 | Seven | X | X | X | +-------+--------+-------------------------+--------+--------+-------+ | F8 | 8 | Eight | X | X | X | +-------+--------+-------------------------+--------+--------+-------+ | F9 | 9 | Nine | X | X | X | +-------+--------+-------------------------+--------+--------+-------+ +-------+--------+-------------------------+--------+--------+-------+ -------------- Variable Types CPI Communications makes use of two variable types, integer and character string. Table 21 defines the type and length of variables used in this document. Variable types are described below. Integers The integers are signed, non-negative integers. Their length is provided in bits. Character Strings Character strings are composed of characters taken from one of the character sets discussed in "Character Sets," or, in the case of buffer, are bytes with no restrictions (that is, a string composed of characters from X'00' to X'FF'). NOTE: The name "character string" as used in this manual should not be confused with "character string" as used in the C programming language. No further restrictions beyond those described above are intended. The character-string length represents the number of characters a character string can contain. CPI Communications defines two lengths for some character-string variables: o MINIMUM SPECIFICATION LENGTH: The minimum number of characters that a program can use to specify the character string. For some character strings, the minimum specification length is zero. A zero-length character string on a call means the character string is omitted, regardless of the length of the variable that contains the character string (see the notes for Table 21). o MAXIMUM SPECIFICATION LENGTH: The maximum number of characters that a transaction program can use to specify a character string. All products can send or receive the maximum specification length for the character string. For example, the character-string length for log_data is listed as 0-512 bytes, where 0 is the minimum specification length and 512 is the maximum specification length. If the variable to which a character string is assigned is longer than the character string, the character string is left-justified within the variable and the variable is filled out to the right with space characters (also referred to as blank characters). Space characters, if present, are not part of the character string. If the character string is formed from the concatenation of two or more individual character strings, as is discussed in note 5 for the partner_LU_name, the concatenated character string as a whole is left-justified within the variable and the variable is filled out to the right with space characters. Space characters, if present, are not part of the concatenated character string. +---------------------------------------------------------------------------+ | Table 21. Variable Types and Lengths | +----------------------------+-----------------+-----------------+----------+ | VARIABLE | VARIABLE TYPE | CHARACTER SET | LENGTH | +----------------------------+-----------------+-----------------+----------+ | AE_qualifier (3), (4) | Character | T61String | 0-1024 | | | string | | bytes | +----------------------------+-----------------+-----------------+----------+ | AE_qualifier_format | Integer | N/A | 32 bits | +----------------------------+-----------------+-----------------+----------+ | AE_qualifier_length | Integer | N/A | 32 bits | +----------------------------+-----------------+-----------------+----------+ | allocate_confirm | Integer | N/A | 32 bits | +----------------------------+-----------------+-----------------+----------+ | AP_title (3), (4) | Character | T61String | 0-1024 | | | string | | bytes | +----------------------------+-----------------+-----------------+----------+ | AP_title_format | Integer | N/A | 32 bits | +----------------------------+-----------------+-----------------+----------+ | AP_title_length | Integer | N/A | 32 bits | +----------------------------+-----------------+-----------------+----------+ | application_context_name | Character | 00640 | 0-256 | | (3), (4) | string | | bytes | +----------------------------+-----------------+-----------------+----------+ | application_context_name_le|gInteger | N/A | 32 bits | +----------------------------+-----------------+-----------------+----------+ | begin_transaction | Integer | N/A | 32 bits | +----------------------------+-----------------+-----------------+----------+ | buffer (1, 2) | Character | no restriction | 0-max | | | string | | supported| | | | | by | | | | | system | +----------------------------+-----------------+-----------------+----------+ | buffer_length (1) | Integer | N/A | 32 bits | +----------------------------+-----------------+-----------------+----------+ | call_ID | Integer | N/A | 32 bits | +----------------------------+-----------------+-----------------+----------+ | callback_function | Pointer (11) | N/A | system- | | | | | dependent|(11) +----------------------------+-----------------+-----------------+----------+ | completed_op_index_list | Array of | N/A | n X 32 | | | integers | | bits | +----------------------------+-----------------+-----------------+----------+ | completed_op_count | Integer | N/A | 32 bits | +----------------------------+-----------------+-----------------+----------+ | confirmation_urgency | Integer | N/A | 32 bits | +----------------------------+-----------------+-----------------+----------+ | context_ID | Character | no restriction | 1-32 | | | string | | bytes | +----------------------------+-----------------+-----------------+----------+ | context_ID_length | Integer | N/A | 32 bits | +----------------------------+-----------------+-----------------+----------+ | control_information_receive| Integer | N/A | 32 bits | +----------------------------+-----------------+-----------------+----------+ | conversation_ID | Character | no restriction | 8 bytes | | | string | | | +----------------------------+-----------------+-----------------+----------+ | conversation_queue | Integer | N/A | 32 bits | +----------------------------+-----------------+-----------------+----------+ | conversation_return_code | Integer | N/A | 32 bits | +----------------------------+-----------------+-----------------+----------+ | conversation_security_type | Integer | N/A | 32 bits | +----------------------------+-----------------+-----------------+----------+ | conversation_state | Integer | N/A | 32 bits | +----------------------------+-----------------+-----------------+----------+ | conversation_type | Integer | N/A | 32 bits | +----------------------------+-----------------+-----------------+----------+ | data_received | Integer | N/A | 32 bits | +----------------------------+-----------------+-----------------+----------+ | deallocate_type | Integer | N/A | 32 bits | +----------------------------+-----------------+-----------------+----------+ | directory_encoding | Integer | N/A | 32 bits | +----------------------------+-----------------+-----------------+----------+ | directory_syntax | Integer | N/A | 32 bits | +----------------------------+-----------------+-----------------+----------+ | error_direction | Integer | N/A | 32 bits | +----------------------------+-----------------+-----------------+----------+ | expedited_receive_type | Integer | N/A | 32 bits | +----------------------------+-----------------+-----------------+----------+ | fill | Integer | N/A | 32 bits | +----------------------------+-----------------+-----------------+----------+ | initialization_data (3), | Character | no restriction | 0-10000 | | (4) | string | | bytes | +----------------------------+-----------------+-----------------+----------+ | initialization_data_length | Integer | N/A | 32 bits | +----------------------------+-----------------+-----------------+----------+ | log_data (3) | Character | no restriction | 0-512 | | | string | | bytes | +----------------------------+-----------------+-----------------+----------+ | log_data_length | Integer | N/A | 32 bits | +----------------------------+-----------------+-----------------+----------+ | maximum_buffer_size (2) | Integer | N/A | 32 bits | +----------------------------+-----------------+-----------------+----------+ | mode_name (3, 4, 8) | Character | 01134 | 0-8 | | | string | | bytes | +----------------------------+-----------------+-----------------+----------+ | mode_name_length | Integer | N/A | 32 bits | +----------------------------+-----------------+-----------------+----------+ | OOID | Integer | N/A | 32 bits | +----------------------------+-----------------+-----------------+----------+ | OOID_list | Array of | N/A | n X 32 | | | integers | | bits | +----------------------------+-----------------+-----------------+----------+ | OOID_list_count | Integer | N/A | 32 bits | +----------------------------+-----------------+-----------------+----------+ | partner_ID | Character | no restriction | 0-32767 | | | string | | bytes | +----------------------------+-----------------+-----------------+----------+ | partner_ID_length | Integer | N/A | 32 bits | +----------------------------+-----------------+-----------------+----------+ | partner_ID_scope | Integer | N/A | 32 bits | +----------------------------+-----------------+-----------------+----------+ | partner_ID_type | Integer | N/A | 32 bits | +----------------------------+-----------------+-----------------+----------+ | partner_LU_name (3, 4, 5) | Character | 01134 | 1-17 | | | string | | bytes | +----------------------------+-----------------+-----------------+----------+ | partner_LU_name_length | Integer | N/A | 32 bits | +----------------------------+-----------------+-----------------+----------+ | prepare_data_permitted | Integer | N/A | 32 bits | +----------------------------+-----------------+-----------------+----------+ | prepare_to_receive_type | Integer | N/A | 32 bits | +----------------------------+-----------------+-----------------+----------+ | processing_mode | Integer | N/A | 32 bits | +----------------------------+-----------------+-----------------+----------+ | queue_processing_mode | Integer | N/A | 32 bits | +----------------------------+-----------------+-----------------+----------+ | receive_type | Integer | N/A | 32 bits | +----------------------------+-----------------+-----------------+----------+ | received_length (2) | Integer | N/A | 32 bits | +----------------------------+-----------------+-----------------+----------+ | request_to_send_received | Integer | N/A | 32 bits | | (10) | | | | +----------------------------+-----------------+-----------------+----------+ | requested_length (2) | Integer | N/A | 32 bits | +----------------------------+-----------------+-----------------+----------+ | return_code | Integer | N/A | 32 bits | +----------------------------+-----------------+-----------------+----------+ | return_control | Integer | N/A | 32 bits | +----------------------------+-----------------+-----------------+----------+ | security_password (3) | Character | 00640 | 0-10 | | | string | | bytes | +----------------------------+-----------------+-----------------+----------+ | security_password_length | Integer | N/A | 32 bits | +----------------------------+-----------------+-----------------+----------+ | security_user_ID (3, 4) | Character | 00640 | 0-10 | | | string | | bytes | +----------------------------+-----------------+-----------------+----------+ | security_user_ID_length | Integer | N/A | 32 bits | +----------------------------+-----------------+-----------------+----------+ | send_length (2) | Integer | N/A | 32 bits | +----------------------------+-----------------+-----------------+----------+ | send_receive_mode | Integer | N/A | 32 bits | +----------------------------+-----------------+-----------------+----------+ | send_type | Integer | N/A | 32 bits | +----------------------------+-----------------+-----------------+----------+ | status_received | Integer | N/A | 32 bits | +----------------------------+-----------------+-----------------+----------+ | sym_dest_name (3, 7) | Character | 01134 | 8 bytes | | | string | | | +----------------------------+-----------------+-----------------+----------+ | sync_level | Integer | N/A | 32 bits | +----------------------------+-----------------+-----------------+----------+ | timeout | Integer | N/A | 32 bits | +----------------------------+-----------------+-----------------+----------+ | TP_name (3, 4, 6) | Character | T61String | 1-64 | | | string | | bytes | +----------------------------+-----------------+-----------------+----------+ | TP_name_length | Integer | N/A | 32 bits | +----------------------------+-----------------+-----------------+----------+ | transaction_control | Integer | N/A | 32 bits | +----------------------------+-----------------+-----------------+----------+ | user_field | Character | no restriction | 8 bytes | | | string | | | +----------------------------+-----------------+-----------------+----------+ | user_field_list | Array of | no restriction | n X 8 | | | character | | bytes | | | strings | | | +----------------------------+-----------------+-----------------+----------+ NOTES: 1. When a transaction program is in conversation with another transaction program executing in an unlike environment (for example, an EBCDIC-environment program in conversation with an ASCII-environment program), buffer may require conversion from one encoding to the other. For character data in character data set 00640, this conversion can be accomplished by Convert_Outgoing in the sending program and by Convert_Incoming in the receiving program. The maximum allowed value of the buffer_length parameter on the Convert_Incoming and Convert_Outgoing calls is implementation-specific. 2. The maximum buffer size for sending and receiving data may vary from system to system. The maximum buffer size is at least 32767. 3. Specify these fields using the native encoding of the local system. When appropriate, CPI Communications automatically converts these fields to the correct format (EBCDIC on LU 6.2 and the negotiated transfer syntax on OSI TP) when they are used as input parameters on CPI Communications calls. When CPI Communications returns these fields to the program (for instance, as output parameters on one of the Extract calls), they are returned in the native encoding of the local system. See "Automatic Conversion of Characteristics" for more information on automatic conversion of these fields. NOTE: An LU 6.2 CRM converts log data in character set 00640 only. To enhance program portability, it is recommended that character set 00640 be used for the log_data characteristic. 4. Because the mode_name, partner_LU_name, security_user_ID, AE_qualifier, AP_title, application_context_name, context_ID, TP_name, and initialization_data characteristics are output parameters on their respective Extract calls, the variables used to contain the output character strings should be defined with a length equal to the maximum specification length. NOTE: An LU 6.2 CRM uses character set 00640 for the partner_LU_name and TP_name. An OSI TP CRM uses character set T61 String for the AE_qualifier, AP_title, application_context_name, and TP_name. Both CRM types use character set 01134 for the mode_name. To enhance program portability, it is recommended that character set 01134, a subset of character sets 00640 and T61 String, be used for these characteristics. 5. The partner_LU_name can be of two varieties: o A character string composed solely of characters drawn from character set 01134 o A character string consisting of two character strings composed of characters drawn from character set 01134. The two character strings are concatenated together by a period (the period is not part of character set 01134). The left-hand character string represents the network ID, and the right-hand character string represents the network LU name. The period is not part of the network ID or the network LU name. Neither network ID nor network LU name may be longer than eight bytes. The use of the period defines which variety of partner_LU_name is being used. 6. The following usage notes apply when specifying the TP_name: o The space character is not allowed in TP_name. o When communicating with non-CPI Communications programs, the TP_name can use characters other than those in character set 00640. See "CPI Communications and LU 6.2 CRMs" on page 2 and "SNA Service Transaction Programs" on page 2 for details. 7. The field containing the sym_dest_name parameter on the CMINIT call must be eight bytes long. The symbolic destination name within that field may be from 0 to 8 characters long, with its characters taken from character set 01134. If the symbolic destination name is shorter than eight characters, it should be left-justified in the variable field, and padded on the right with spaces. A sym_dest_name parameter composed of eight spaces has special significance. See "Initialize_Conversation (CMINIT)" for more information. 8. The four names in the following list are mode names defined by the LU 6.2 architecture for user sessions and may be specified for CPI Communications conversations on systems where they are defined, even though they contain the character #, which is not found in character set 01134: o #BATCH o #BATCHSC o #INTER o #INTERSC 9. The maximum size of the the partner_ID characteristic is determined by the partner_ID_type. o If the partner_ID_type is CM_PROGRAM_BINDING, the maximum size is 32767 bytes. o If the partner_ID_type is CM_DISTINGUISHED_NAME, CM_LOCAL_DISTINGUISHED_NAME, CM_PROGRAM_FUNCTION_ID, or CM_OSI_TPSU_TITLE_OID, the maximum size is 1024 bytes. 10. The request_to_send_received variable is used by CPI-C 1.2 programs. CPI-C 2.0 programs use control_information_received, which is an enhanced version of this variable. 11. The callback_function specifies a pointer to a routine and is supported by the C programming language only. Its length depends on the C compiler. ------------------ Distinguished Name In general, directory objects are identified by a name. Different directories specify different syntax conventions for directory object names. Regardless of syntactic differences though, two naming convention commonalities can be identified: o The program specifies a fully-qualified name that is valid for the entire distributed directory and namespace. A fully-qualified name may also be referred to as a global name. o The program specifies an incomplete name that is only a part of a global name. An incomplete name is also referred to as a partial name. The global name can be created from a partial name by appending a prefix. Here are some examples of global names using two different naming conventions. The first is an XDS-compliant distinguished name. The second is a name for the same object that would be recognized by DCE: XDS: /C=us/O=UNC/OU=ChapelHill/CN=ThomasWolfe DCE: /.../C=us/O=UNC/OU=ChapelHill/CN=ThomasWolfe The distinguished name consists of a sequence of RELATIVE DISTINGUISHED NAMES (RDNs) separated by slashes. Each RDN is composed of an identifier that is set equal to a value. In the example, well-known abbreviations for identifiers are used--C for country, O for organization, OU for organization unit, CN for common name. Thus, the example name identifies an object for someone with a common name of ThomasWolfe at the Chapel Hill campus of the University of North Carolina (UNC). The "/.../" prefix at the front of the DCE name explicitly identifies the name as global. The partial name of ThomasWolfe might be used to identify the object, but a prefix of /C=us/O=UNC/OU=ChapelHill/ would be required to make sure that it didn't locate a Tom Wolfe at the Greensboro campus of UNC. The specific DCE syntax for such a partial name would be /.:/ThomasWolfe In DCE, the "/.:" prefix explicitly identifies the name as a partial distinguished name. The default prefix used by the local system to create a complete DN is the DCE "cell" name. In CPI Communications, a distinguished name is always a global name. Programs establish a distinguished name by issuing the Set_Partner_ID call with a partner_ID_type set to CM_DISTINGUISHED_NAME. Programs establish a partial distinguished name by issuing the Set_Partner_ID call with a partner_ID_type set to CM_LOCAL_DISTINGUISHED_NAME. Format and syntax of the partner_ID characteristic are determined by the directory_syntax and directory_encoding characteristics. ---------------------------------- Program Function Identifier (PFID) The program function identifier (PFID) identifies the function provided by the program, thus allowing multiple installations of a given program to be recognized as providing the same function. This relationship is illustrated in Figure 26. In this example, Program A, B, and C all provide the same function. For example, they might be mail servers located on three different nodes. Conversations are allocated to each program using different destination information, and each would be identified with a different sym_dest_name or DN. The PFID allows all three programs to be identified as providing the same function. *----------------* *------------* *----------------* *------------* *----------------* *------------* | sym_dest_nameA | | dist_nameA | | sym_dest_nameB | | dist_nameB | | sym_dest_nameC | | dist_nameC | *----------------* *------------* *----------------* *------------* *----------------* *------------* | | | | | | V V V V V V *-----------------* *-----------------* *-----------------* | dest. info. for | | dest. info. for | | dest. info. for | | Program A | | Program B | | Program C | *-----------------* *-----------------* *-----------------* A A A | | | *---------------------------* | *---------------------------* | | | *----------------------* | program function ID | | for | | Program A, B, C | *----------------------* NOTE: Program A, B, and C are three different programs, with three different pieces of addressing information, but all provide the same function. Figure 26. Relationship of PFID to Program Installation DNs PFIDs must be administered to ensure they are unambiguous and no PFID value is assigned to more than one function. Unambiguous PFIDs allow use (and publication) of the PFID prior to creation of directory objects, and remove the requirement for installation questions about specific DNs. For example, code making use of PFIDs allows distribution of shrink-wrapped applications. PFID Assignment Algorithms CPI Communications does not establish any assignment algorithms or syntax rules for the PFID. It treats the PFID as a string and will retrieve program bindings by finding program installation objects that contain a matching PFID string. Assignment of PFIDs is implementation- and application- dependent. Here are three sample assignment algorithms that ensure PFID uniqueness: 1. PFID values are Universal Unique Identifiers (UUIDs). 2. PFID values are ISO-registered object identifiers (OIDs). 3. A general-purpose naming method is created using existing naming registeries. Here is such a method: o The value consists of up to 1024 printable characters in GCSGID 640 (the set of invariant graphics in most character sets and also found in the invariant part of ISO 646). o The value is organized as set of three or more tokens separated by slashes(/). o The first token identifies the existing naming authority. To accommodate the spectrum of developers, three values are proposed to begin with: "SNA," "INTERNET," and "OSI." o The second token is a unique value assigned by the naming authority identified in the first token. The token values vary based on the naming authority: - For SNA, the second token is a registered SNA NETID. For those network owners with more than one registered NETID, any one of them may be selected for this purpose. The third and last token is administered by the "owner" of the NETID. - For INTERNET, the second token is a printable form of a class A, B, or C NETID in decimal octet format (such as "9.0.0.0" for IBM). Alternatively, a domain name suffix such as "AUSTIN.IBM.COM" could be used. The third and last token is administered by the "owner" of the NETID. - For OSI the second token is a two character country code as described in ISO 3166 (such as US). The country code identifies the country under which the third token is registered. The third token is an organization code as registered by the registration authority in the country identified by the second token. (In the US, American National Standards Institute (ANSI) operates a registry for organizations.). The fourth token is administered by the organization. For example, if fictitious organization MYCOMPANY registered with ANSI, and identified a program function as ACCOUNTS_PAYABLE, the PFID would be: /OSI/US/MYCOMPANY/ACCOUNTS_PAYABLE --------------- Program Binding A PROGRAM BINDING contains the destination information required to allocate a conversation. The data in the binding is of the general pattern "field_type=field_value; field_type=field_value" where field_type is a four-byte identifier for the field and field_value is a variable-length field. The end of a field_value is determined by the semicolon character. If the field_value itself contains a semicolon, the textual semicolon is repeated. Table 22 shows the 4-byte code for each field_type, along with a maximum length for each field_value. Note that the field_type of "BIND" has a maximum length of 0; this is because the BIND field_type is used to begin a binding and is immediately followed by another field_type. The binding is complete when either the end of the string is reached or another BIND field_type is reached. +--------------------------------------------------------------------------------------------------------------------------------+ | Table 22. Fields in the Program Binding | +------------------------------------+------------------------------------+-----------------+------------------------------------+ | DESCRIPTION OF FIELD CONTENTS | 4-BYTE FIELD_TYPE CODE | ORDER | MAXIMUM LENGTH OF FIELD | +------------------------------------+------------------------------------+-----------------+------------------------------------+ | binding | | 1 | 0 | | | BIND | | | | | | | | +------------------------------------+------------------------------------+-----------------+------------------------------------+ | CRM type | | 2 | 5 | | | CRMT | | | | | | | | +------------------------------------+------------------------------------+-----------------+------------------------------------+ | TP name | | 3 | 64 | | | TPNM | | | | | | | | +------------------------------------+------------------------------------+-----------------+------------------------------------+ | mode name | | 4 | 8 | | | MODE | | | | | | | | +------------------------------------+------------------------------------+-----------------+------------------------------------+ | partner LU name | | 5 | 17 | | | PLUN | | | | | | | | +------------------------------------+------------------------------------+-----------------+------------------------------------+ | partner principal name | | 6 | 1024 | | | PPNM | | | | | | | | +------------------------------------+------------------------------------+-----------------+------------------------------------+ | required user name type | | 7 | 9 | | | RUNM | | | | | | | | +------------------------------------+------------------------------------+-----------------+------------------------------------+ | AE qualifier | | 8 | 1024 | | | AEQL | | | | | | | | +------------------------------------+------------------------------------+-----------------+------------------------------------+ | AP title | | 9 | 1024 | | | APTI | | | | | | | | +------------------------------------+------------------------------------+-----------------+------------------------------------+ | application context name | | 10 | 256 | | | APCN | | | | | | | | +------------------------------------+------------------------------------+-----------------+------------------------------------+ A valid binding must contain both a CRM_type and TP_name field. The possible values of the CRM_type field_value are "LU 6.2" and "OSITP." If the CRM_type is "LU 6.2," the AE qualifier, AP title, and application context name fields should not be present. Similiarly, if the CRM_type is "OSITP," the partner LU name field should not be included in the program binding. Possible values for required user name type are: "NONE," "LOCAL," and "PRINCIPAL." The valid ordering of field_types for a single binding is as shown in Table 22. Errors in the binding format will result in failure of the Allocate call with a return code of CM_PARAMETER_ERROR. NOTE: o Programs extracting a program binding after accepting a conversation may not receive a valid program binding because some fields may not be available to CPI Communications. Missing fields will have an field_type, but no field_value. For example, "TPNM=;" would be returned in a program binding for a program accepting a conversation with a CRM_type of "LU 6.2." See "Extract_Partner_ID (CMEPID)" for further information. o On systems using distributed directories that support multiple values for an attribute, the program_binding should be stored as a single attribute value. SAMPLE PROGRAM BINDING: Figure 27 shows a sample program binding for a program with the following destination information fields: o CRM type of "LU 6.2" o TP name of "PAYROLL" o Mode name of "BATCH" o Partner LU name of "ibmnet07.accntlu0" +--------------------------------------------------------------------+ | | | BIND=;CRMT=SNA;TPNM=PAYROLL;MODE=BATCH;PLUN=IBMNET07.ACCNT|U0; | | | | +--------------------------------------------------------------------+ Figure 27. Sample Program Binding Format If the program can also be accessed by a second LU, that information can be included in the example by adding a "BIND=;" tag after the last semicolon and providing the next set of binding information. ---------------------------------------------------------------------------------------------------------------------------------- Appendix B. Return Codes and Secondary Information This chapter discusses the parameter called return_code that is passed back to the program at the completion of a call. It also discusses associated secondary information that may be available for the program to extract using the Extract_Secondary_Information call. ------------ Return Codes All calls have a parameter called return_code that is passed back to the program at the completion of a call. The return code can be used to determine call-execution results and any state change that may have occurred on the specified conversation. On some calls, the return code is not the only source of call-execution information. For example, on the Receive call, the status_received and data_received parameters should also be checked. Some of the return codes indicate the results of the local processing of a call. These return codes are returned on the call that invoked the local processing. Other return codes indicate results of processing invoked at the remote end of the conversation. Depending on the call, these return codes can be returned on the call that invoked the remote processing or on a subsequent call. Still other return codes report events that originate at the remote end of the conversation. In all cases, only one code is returned at a time. Some of the return codes associated with the allocation of a conversation have the suffix RETRY or NO_RETRY in their name. o RETRY means that the condition indicated by the return code may not be permanent, and the program can try to allocate the conversation again. Whether or not the retry attempt succeeds depends on the duration of the condition. In general, the program should limit the number of times it attempts to retry without success. o NO_RETRY means that the condition is probably permanent. In general, a program should not attempt to allocate the conversation again until the condition is corrected. For programs using conversations with sync_level set to CM_SYNC_POINT or CM_SYNC_POINT_NO_CONFIRM, all return codes indicating a required backout have numeric values equal to or greater than CM_TAKE_BACKOUT. This allows the CPI Communications programmer to test for a range of return code values to determine if backout processing is required. An example is: return_code >= CM_TAKE_BACKOUT The return codes shown below are listed alphabetically, and each description includes the following: o Meaning of the return code o Origin of the condition indicated by the return code o When the return code is reported to the program o The state of the conversation when control is returned to the program NOTES: 1. The individual call descriptions in Chapter 4, "Call Reference Section" list the return code values that are valid for each call. 2. The integer values that correspond to the pseudonyms listed below are provided in Table 19 of Appendix A, "Variables and Characteristics." The valid return_code values are described below: CM_ALLOCATE_FAILURE_NO_RETRY The conversation cannot be allocated on a logical connection because of a condition that is not temporary. When this return_code value is returned to the program, the conversation is in RESET state. For example, if the conversation is using an LU 6.2 CRM, the logical connection (session) to be used for the conversation cannot be activated because the current session limit for the specified LU-name and mode-name pair is 0, or because of a system definition error or a session-activation protocol error. This return code is also returned when the session is deactivated because of a session protocol error before the conversation can be allocated. The program should not retry the allocation request until the condition is corrected. This return code is returned on the Allocate call. CM_ALLOCATE_FAILURE_RETRY The conversation cannot be allocated on a logical connection because of a condition that may be temporary. When this return_code value is returned to the program, the conversation is in RESET state. For example, the logical connection to be used for the conversation cannot be activated because of a temporary lack of resources at the local system or remote system. This return code is also returned if the logical connection is deactivated because of logical connection outage before the conversation can be allocated. The program can retry the allocation request. This return code is returned on the Allocate call. CM_ALLOCATION_ERROR This may be returned on calls associated with the Send queue (except the Deallocate call with deallocate_type set to CM_DEALLOCATE_ABEND) while the conversation is in SEND-RECEIVE state. The function requested on the call is not performed. The return code indicates that the partner system rejected the conversation startup request. At the time this return code information is returned, the cause of allocation rejection is not returned to the program. The cause of the allocation rejection, which can be one of the following, can be obtained through the return code on the first Receive call. o CM_SEND_RCV_MODE_NOT_SUPPORTED (OSI TP CRM only) o CM_CONVERSATION_TYPE_MISMATCH (LU 6.2 CRM only) o CM_PIP_NOT_SPECIFIED_CORRECTLY (LU 6.2 CRM only) o CM_SECURITY_NOT_VALID (LU 6.2 CRM only) o CM_SYNC_LEVEL_NOT_SUPPORTED_SYS (OSI TP CRM only) o CM_SYNC_LEVEL_NOT_SUPPORTED_PGM (LU 6.2 CRM only) o CM_TPN_NOT_RECOGNIZED o CM_TP_NOT_AVAILABLE_NO_RETRY o CM_TP_NOT_AVAILABLE_RETRY The conversation is in RECEIVE-ONLY state. CM_BUFFER_TOO_SMALL The local program issued a CPI Communications call specifying a buffer size that is insufficient for the amount of data available for the program to receive. The state of the conversation remains unchanged. CM_CALL_NOT_SUPPORTED The call is not supported by the local system. This return code is returned on any call in an optional conformance class when the implementation provides an entry point for the call but does not support the function requested by the call. The state of the conversation remains unchanged. CM_CONV_DEALLOC_AFTER_SYNCPT (LU 6.2 CRM ONLY) The conversation was deallocated as a part of the last sync-point operation. The local program was not given prior notification of the imminent deallocation because of a commit operation race that arose as follows: This program issued the resource recovery commit call. At the same time, the partner program issued a Deallocate call with deallocate_type set to CM_DEALLOCATE_SYNC_LEVEL and sync_level set to CM_SYNC_POINT_NO_CONFIRM, followed by the commit call. CM_CONVERSATION_ENDING (LU 6.2 CRM ONLY) This return code is returned on the Send_Expedited_Data and Receive_Expedited_Data calls and indicates one of the following: o The local CRM is ending the conversation normally. o A notification indicating that the remote program is ending the conversation (normally or abnormally) has been received by the local CRM. o A notification of an error that causes the conversation to terminate has been received from the remote CRM or occurred locally. The error that causes the conversation to terminate may be an allocation error, a conversation failure, or a deallocation of the conversation. The return code indicating the cause of termination is returned on the calls associated with Send-Receive queue (half-duplex conversations only) or with the Send and Receive queues (full-duplex conversations only). The state of the conversation remains unchanged. Subsequent calls associated with the expedited queues will be rejected with this return code until the conversation enters RESET state. CM_CONVERSATION_TYPE_MISMATCH (LU 6.2 CRM ONLY) The remote system rejected the conversation startup request because of one of the following: o The local program issued an Allocate call with conversation_type set to either CM_MAPPED_CONVERSATION or CM_BASIC_CONVERSATION, and the remote program does not support the respective conversation type. o The local program issued an Allocate call with send_receive_mode set to either CM_HALF_DUPLEX or CM_FULL_DUPLEX, and the remote program does not support the respective send-receive mode. For a half-duplex conversation, this return code is returned on a subsequent call to the Allocate. For a full-duplex conversation, this return code is returned on the Receive call. Calls associated with the Send queue that complete before this return code is returned on the Receive call are notified of the conversation type mismatch by a CM_ALLOCATION_ERROR return code. When this return_code value is returned to the program, the conversation is in RESET state. If conversation_security_type is set to CM_SECURITY_MUTUAL, then this return code may be returned on the Allocate call. CM_DEALLOCATE_CONFIRM_REJECT (OSI TP CRM ONLY) This return code is returned on a full-duplex conversation under one of the following two conditions: o The program issued a Deallocate call with deallocate_type set to CM_DEALLOCATE_CONFIRM and the partner program responded negatively to the Deallocate by issuing a Send_Error call in CONFIRM-DEALLOCATE state. o The program issued a Send_Data call with send_type set to CM_SEND_AND_DEALLOCATE and deallocate_type set to CM_DEALLOCATE_CONFIRM, and the partner program responded negatively to the Send-Data by issuing a Send_Error call in CONFIRM-DEALLOCATE state. A Receive call issued by the local program will receive a CM_PROGRAM_ERROR_PURGING return code after all available data is received. The state of the conversation remains unchanged. CM_DEALLOCATED_ABEND This return code may be returned under one of the following conditions: o The remote program issued a Deallocate call with deallocate_type set to CM_DEALLOCATE_ABEND, or a Cancel_Conversation call, or the remote system has done so because of a remote program abnormal-ending condition. If the remote program was in RECEIVE state (half-duplex conversations only) or in SEND-RECEIVE or RECEIVE-ONLY state (full-duplex conversations only) when the call was issued, information sent by the local program and not yet received by the remote program is purged. o The remote program terminated normally but did not deallocate the conversation before terminating. Node services at the remote system deallocated the conversation on behalf of the remote program. o On a half-duplex conversation using an OSI TP CRM, the local program issued a Send_Error call, and the error notification was delivered to the remote CRM. Subsequently, the remote program issued a Deallocate call with deallocate_type set to CM_DEALLOCATE_FLUSH, or with deallocate_type set to CM_DEALLOCATE_SYNC_LEVEL and sync_level set to CM_NONE, or with deallocate_type set to CM_DEALLOCATE_SYNC_LEVEL, sync_level set to CM_SYNC_POINT_NO_CONFIRM, and the conversation currently not included in a transaction. o begin_transaction_collision (OSI TP CRM only) On a full-duplex conversation, there was a collision between a Deallocate call with deallocate_type set to CM_DEALLOCATE_CONFIRM issued by the local program and an Include_Partner_In_Transaction call issued by the partner program. No log data is available. o dealloc_confirm_collision (OSI TP CRM only) On a full-duplex conversation, there was a collision between a Deallocate call with deallocate_type set to CM_DEALLOCATE_CONFIRM issued by the local program and a Deallocate call with deallocate_type set to CM_DEALLOCATE_CONFIRM call issued by the partner program. No log data is available. o On a full-duplex conversation in SEND-RECEIVE state or RECEIVE-ONLY state, the local program has issued a Deallocate call with deallocate_type set to CM_DEALLOCATE_ABEND. For a half-duplex conversation, this return code is reported to the local program on a call issued in SEND or RECEIVE state. For a full-duplex conversation, this return code is returned on a Receive call issued in SEND-RECEIVE or RECEIVE-ONLY state. It is also returned on calls associated with the Send queue (except the Deallocate call with deallocate_type set to CM_DEALLOCATE_ABEND) under one of the following conditions: o They are issued in SEND-ONLY state. o They are issued in SEND-RECEIVE state and complete before this return code is returned on the Receive call. The conversation is now in RESET state unless the return code was returned on one of the calls associated with the Send queue, issued in SEND-RECEIVE state. In that case, the conversation is in RECEIVE-ONLY state. CM_DEALLOCATED_ABEND_BO This return code is returned only for conversations with sync_level set to CM_SYNC_POINT or CM_SYNC_POINT_NO_CONFIRM, and with the conversation included in a transaction. This return code may be returned under one of the following conditions: o The remote program issued a Deallocate call with deallocate_type set to CM_DEALLOCATE_ABEND or a Cancel_Conversation call, or the remote system has done so because of a remote program abnormal-ending condition. o dealloc_cfm_collision_bo (OSI TP CRM only) On a full-duplex conversation, there was a collision between a Include_Partner_In_Transaction call issued by this program and a Deallocate call with deallocate_type set to CM_DEALLOCATE_CONFIRM issued by the partner program. The Include_Partner_In_Transaction call got a return code of CM_OK. However, when the collision is detected, a CM_DEALLOCATED_ABEND_BO return code is returned on a subsequent call. No log data is available. If the remote program was in RECEIVE state (half-duplex conversations only) or in SEND-RECEIVE, PREPARED or DEFERRED-DEALLOCATE states (full-duplex conversations only) when it issued the Deallocate call, information sent by the local program and not yet received by the remote program is purged. For a half-duplex conversation, this return code is reported to the local program on a call issued in SEND or RECEIVE state. For a full-duplex conversation, this return code is reported to the local program on calls issued in SEND-RECEIVE, SYNC-POINT, DEFERRED-DEALLOCATE, SYNC-POINT-DEALLOCATE and PREPARED states. The conversation is now in RESET state. For a full-duplex conversation, incoming information may not be received if this return code is returned on a call associated with the Send queue. The local conversation's context is in the BACKOUT-REQUIRED condition, and the program must issue a resource recovery backout call in order to restore all of the context's protected resources to their status as of the last synchronization point. CM_DEALLOCATED_ABEND_SVC (LU 6.2 CRM ONLY) This return code is returned for basic conversations only. It may be returned under one of the following conditions: o The remote program, using an LU 6.2 application programming interface and not using CPI Communications, issued a DEALLOCATE verb specifying a TYPE parameter of ABEND_SVC. If the remote program was in RECEIVE state (half-duplex conversations only) or in SEND-RECEIVE or RECEIVE-ONLY state (full-duplex conversations only) when the verb was issued, information sent by the local program and not yet received by the remote program is purged. o The remote program either terminated abnormally or terminated normally but did not deallocate the conversation before terminating. Node services at the remote system deallocated the conversation on behalf of the remote program. For a half-duplex conversation, this return code is reported to the local program on a call issued in SEND or RECEIVE state. For a full-duplex conversation, this return code is returned on a Receive call issued in SEND-RECEIVE or RECEIVE-ONLY state. It is also returned on calls associated with the Send queue (except the Deallocate call with deallocate_type set to CM_DEALLOCATE_ABEND) under one of the following conditions: o They are issued in SEND-ONLY state. o They are issued in SEND-RECEIVE state and complete before this return code is returned on the Receive call. The conversation is now in RESET state unless the return code was returned on one of the calls associated with the Send queue issued in SEND-RECEIVE state. In that case, the conversation is in RECEIVE-ONLY state. CM_DEALLOCATED_ABEND_SVC_BO (LU 6.2 CRM ONLY) This return code is returned only for basic conversations with sync_level set to CM_SYNC_POINT. It is returned under the same conditions described under CM_DEALLOCATED_ABEND_SVC above. For a half-duplex conversation, this return code is reported to the local program on a call issued in SEND or RECEIVE state. For a full-duplex conversation, this return code is reported to the local program on calls issued in SEND-RECEIVE, SYNC-POINT, DEFERRED-DEALLOCATE, SYNC-POINT-DEALLOCATE, and PREPARED states. The conversation is now in RESET state. The local conversation's context is in the BACKOUT-REQUIRED condition and the program must issue a resource recovery backout call in order to restore all of the context's protected resources to their status as of the last synchronization point. CM_DEALLOCATED_ABEND_TIMER (LU 6.2 CRM ONLY) This return code is returned only for basic conversations. In addition, it is returned only when the remote program is using an LU 6.2 application programming interface and is not using CPI Communications. The remote LU 6.2 transaction program issued a DEALLOCATE verb specifying a TYPE parameter of ABEND_TIMER. For a half-duplex conversation, this return code is reported to the local program on a call issued in SEND or RECEIVE state. For a full-duplex conversation, this return code is returned on a Receive call issued in SEND-RECEIVE or RECEIVE-ONLY state. It is also returned on calls associated with the Send queue (except the Deallocate call with deallocate_type set to CM_DEALLOCATE_ABEND) under one of the following conditions: o They are issued in SEND-ONLY state. o They are issued in SEND-RECEIVE state and complete before this return code is returned on the Receive call. The conversation is now in RESET state unless the return code was returned on one of the calls associated with the Send queue issued in SEND-RECEIVE state. In that case, the conversation is in RECEIVE-ONLY state. CM_DEALLOCATED_ABEND_TIMER_BO (LU 6.2 CRM ONLY) This return code is returned only for basic conversations with sync_level set to CM_SYNC_POINT or CM_SYNC_POINT_NO_CONFIRM, and only when the remote program is using an LU 6.2 application programming interface and is not using CPI Communications. The remote LU 6.2 transaction program issued a DEALLOCATE verb specifying a TYPE parameter of ABEND_TIMER. If the conversation for the remote program was in RECEIVE state (half-duplex conversations only) or in SEND-RECEIVE, PREPARED, or DEFERRED-DEALLOCATE state (full-duplex conversations only) when the verb was issued, information sent by the local program and not yet received by the remote program is purged. If the return code is returned on a call associated with the Send queue for a full-duplex conversation, incoming data may be purged. For a half-duplex conversation, this return code is reported to the local program on a call issued in SEND or RECEIVE state. For a full-duplex conversation, this return code is reported to the local program on calls issued in SEND-RECEIVE, SYNC-POINT, DEFERRED-DEALLOCATE, SYNC-POINT-DEALLOCATE, and PREPARED states. The conversation is now in RESET state. The local conversation's context is in the BACKOUT-REQUIRED condition and the program must issue a resource recovery backout call in order to restore all of the context's protected resources to their status as of the last synchronization point. CM_DEALLOCATED_NORMAL This return code may be returned under one of the following conditions: o The remote program issued a Deallocate call or a Send_Data call with send_type set to CM_SEND_AND_DEALLOCATE on a basic or mapped conversation with one of the following: - deallocate_type set to CM_DEALLOCATE_FLUSH - deallocate_type set to CM_DEALLOCATE_SYNC_LEVEL and sync_level set to CM_NONE - deallocate_type set to CM_DEALLOCATE_SYNC_LEVEL, sync_level set to CM_SYNC_POINT_NO_CONFIRM, and the conversation is not currently included in a transaction For a half-duplex conversation, this return code is reported to the local program on a call issued in RECEIVE state. For a full-duplex conversation, this return code is reported to the local program on the Receive call issued in SEND-RECEIVE or RECEIVE-ONLY state. If the conversation is a full-duplex conversation using an OSI TP CRM, this return code is also returned on calls associated with the Send queue (except the Deallocate call with deallocate_type set to CM_DEALLOCATE_ABEND). o The local program issued a Deallocate call or a Send_Data call with send_type set to CM_SEND_AND_DEALLOCATE and with one of the following: - deallocate_type set to CM_DEALLOCATE_FLUSH - deallocate_type set to CM_DEALLOCATE_SYNC_LEVEL, sync_level set to CM_NONE, and the conversation is a full-duplex conversation using an OSI TP CRM - deallocate_type set to CM_DEALLOCATE_SYNC_LEVEL, sync_level set to CM_SYNC_POINT_NO_CONFIRM, and the conversation is not currently included in a transaction This return code is returned to the local program on a Receive call that was outstanding when the Deallocate call was issued. For a half-duplex conversation, the conversation is now in RESET state. For a full-duplex conversation, the conversation can now be in one of the following states: o RESET state if this return code was returned on calls issued in RECEIVE-ONLY or SEND-ONLY state. o SEND-ONLY state if this return code was returned on a Receive call issued in SEND-RECEIVE state. o RECEIVE-ONLY state if this return code was returned on calls associated with the Send queue (except the Deallocate call with deallocate_type set to CM_DEALLOCATE_ABEND) issued in SEND-RECEIVE state. CM_DEALLOCATED_NORMAL_BO This return code is returned only for half-duplex conversations with sync_level set to CM_SYNC_POINT or CM_SYNC_POINT_NO_CONFIRM, and with the conversation included in a transaction. When the conversation is using an LU 6.2 CRM and the Send_Error call is issued in RECEIVE state, incoming information is purged by the system. This purged information may include an abend deallocation notification from the remote program or system. When such a notification is purged, CPI Communications returns CM_DEALLOCATED_NORMAL_BO instead of one of the following return codes: o CM_DEALLOCATED_ABEND_BO o CM_DEALLOCATED_ABEND_SVC_BO o CM_DEALLOCATED_ABEND_TIMER_BO The conversation is now in RESET state. The local conversation's context is in the BACKOUT-REQUIRED condition and the program must issue a resource recovery backout call in order to restore all of the context's protected resources to their status as of the last synchronization point. CM_EXP_DATA_NOT_SUPPORTED (LU 6.2 CRM ONLY) An expedited data call was locally rejected because the remote CRM does not support expedited data. The state of the conversation remains unchanged. CM_INCLUDE_PARTNER_REJECT_BO (OSI TP CRM ONLY) A prior Include_Partner_In_Transaction call issued by the program completed locally with CM_OK but was rejected by the partner system. The partner system rejected the request to join the transaction because the partner program is already a part of another transaction and cannot be a part of two transactions at the same time. The conversation is now in RESET state. The local conversation's context is in the BACKOUT-REQUIRED condition and the program must issue a resource recovery backout call in order to restore all of the context's protected resources to their status as of the last synchronization point. CM_NO_SECONDARY_INFORMATION The Extract_Secondary_Information call did not complete successfully because no secondary information was available for the specified call on the specified conversation. The state of the conversation remains unchanged. CM_OK The call issued by the local program executed successfully (that is, the function defined for the call, up to the point at which control is returned to the program, was performed as specified). The state of the conversation is as defined for the call. CM_OPERATION_INCOMPLETE A non-blocking operation has been started either on the conversation (when conversation-level non-blocking is used) or on the queue with which the call is associated (when queue-level non-blocking is used), but the operation has not completed. This return code is returned when the call is suspended waiting for incoming data, buffers, or other resources. A program must do one of the following: o For conversation-level non-blocking, use the Wait_For_Conversation call to wait for the operation to complete and to retrieve the return code for the completed operation. o For queue-level non-blocking, - If an OOID is associated with the outstanding operation, use the Wait_For_Completion call to wait for the operation to complete and to obtain the OOID and user field corresponding to the completed operation. - If a callback function is associated with the outstanding operation, use the callback function, callback information, and user field to properly handle the completed operation. The state of the conversation remains unchanged. CM_OPERATION_NOT_ACCEPTED A previous operation either on this conversation (when conversation-level non-blocking is chosen) or on the same queue (when conversation-level non-blocking is not chosen) is incomplete. This return code is returned when there is an outstanding operation on the conversation or queue, as indicated by the CM_OPERATION_INCOMPLETE return code to a previous call. On a system that supports multiple program threads, when one thread has started an operation that has not completed, this return code is returned on a call made by another thread on the same conversation or associated with the same queue. The state of the conversation remains unchanged. CM_PARM_VALUE_NOT_SUPPORTED The specified value of a call parameter is not supported by the local system. This return code is returned on a call with defined parameter values that are optional for support of the call. It is returned when the implementation supports the call but does not support the specified optional parameter value. The state of the conversation remains unchanged. CM_PARAMETER_ERROR The local program issued a call specifying a parameter containing an invalid argument. ("Parameters" include not only the parameters described as part of the call syntax, but also characteristics associated with the conversation_ID.) The source of the argument is considered to be outside the program definition, such as an LU name supplied by a system administrator in the side information and referenced by the Initialize_Conversation call. The CM_PARAMETER_ERROR return code is returned on the call specifying the invalid argument. The state of the conversation remains unchanged. NOTE: Contrast this definition with the definition of the CM_PROGRAM_PARAMETER_CHECK return code. CM_PIP_NOT_SPECIFIED_CORRECTLY (LU 6.2 CRM ONLY) This return code is returned only when the remote program is using an LU 6.2 application programming interface and is not using CPI Communications. The remote CRM rejected the conversation startup request because the remote program has one or more program initialization parameter (PIP) variables defined and the initialization data specified by the local program is incorrect. This return code is returned on a call issued after the Allocate for a half-duplex conversation. For a full-duplex conversation, this return code is returned on the Receive call. Calls associated with the Send queue that complete before this return code is returned are notified of the error by an CM_ALLOCATION_ERROR return code. When this return code is returned to the program, the conversation is in RESET state. If conversation_security_type is set to CM_SECURITY_MUTUAL, then this return code may be returned on the Allocate call. CM_PRODUCT_SPECIFIC_ERROR A product-specific error has been detected and a description of the error has been entered into the product's system error log. See product documentation for an indication of conditions and state changes caused by this return code. CM_PROGRAM_ERROR_NO_TRUNC (LU 6.2 CRM ONLY) One of the following occurred: o The remote program issued a Send_Error call on a mapped conversation and the conversation for the remote program was in SEND state (half-duplex conversations only) or in SEND-RECEIVE or SEND-ONLY state (full-duplex conversations only). No truncation occurs at the mapped conversation protocol boundary. This return code is reported to the local program on a Receive call the program issues before receiving any data records or after receiving one or more data records. o The remote program issued a Send_Error call on a basic conversation, the conversation for the remote program was in SEND state (half-duplex conversations only) or in SEND-RECEIVE or SEND-ONLY state (full-duplex conversations only), and the call did not truncate a logical record. No truncation occurs at the basic conversation protocol boundary when a program issues Send_Error before sending any logical records or after sending a complete logical record. This return code is reported to the local program on a Receive call the program issues before receiving any logical records or after receiving one or more complete logical records. o The remote program issued a Send_Error call on a mapped or basic half-duplex conversation and the conversation for the remote program was in SEND-PENDING state. No truncation of data has occurred. This return code indicates that the remote program has issued Set_Error_Direction to set the error_direction characteristic to CM_SEND_ERROR. The return code is reported to the local program on a Receive call the program issues before receiving any data records or after receiving one or more data records. The conversation remains in RECEIVE state for a half-duplex conversation or in SEND-RECEIVE or RECEIVE-ONLY state for a full-duplex conversation. CM_PROGRAM_ERROR_PURGING One of the following occurred: o The remote program issued a Send_Error call on a basic or mapped half-duplex conversation while its end of the conversation was in RECEIVE or CONFIRM state. The call may have caused information enroute to the remote program to be purged (discarded), but not necessarily. Purging occurs when the remote program issues Send_Error for a half-duplex conversation in RECEIVE state before receiving all the information being sent by the local program. No purging occurs when the remote program issues Send_Error for a conversation in RECEIVE state if the remote program has already received all the information sent by the local program. Also, no purging occurs when the remote program issues Send_Error for a conversation in CONFIRM state. When information is purged, the purging can occur at the local system, the remote system, or both. o The remote program issued a Send_Error call on a mapped or basic half-duplex conversation and the conversation for the remote program was in SEND-PENDING state. No purging of data has occurred. This return code indicates that the remote program has issued a Send_Error call with error_direction set to CM_RECEIVE_ERROR. o The full-duplex conversation is allocated using an OSI TP CRM and the remote program issued a Send_Error call while its end of the conversation was in SEND-RECEIVE, SEND-ONLY, or CONFIRM-DEALLOCATE state. Purging of data sent by the local program may have occurred in transit, if the remote program was in SEND-RECEIVE or SEND-ONLY state when it issued Send_Error. For a half-duplex conversation, this return code is normally reported to the local program on a call the program issues after sending some information to the remote program. However, the return code can be reported on a call the program issues before sending any information, depending on the call and when it is issued. For a full-duplex conversation, this return code is returned on the Receive call. The half-duplex conversation remains in RECEIVE state. The full-duplex conversation remains in SEND-RECEIVE or RECEIVE-ONLY state. CM_PROGRAM_ERROR_TRUNC (LU 6.2 CRM ONLY) The remote program issued a Send_Error call on a basic conversation, the conversation for the remote program was in SEND state (half-duplex conversations only) or in SEND-RECEIVE or SEND-ONLY state (full-duplex conversations only), and the call truncated a logical record. Truncation occurs at the basic conversation protocol boundary when a program begins sending a logical record and then issues Send_Error before sending the complete logical record. This return code is reported to the local program on a Receive call the program issues after receiving the truncated logical record. The conversation remains in RECEIVE state for a half-duplex conversation or in SEND-RECEIVE or RECEIVE-ONLY state for a full-duplex conversation. CM_PROGRAM_PARAMETER_CHECK The local program issued a call in which a programming error has been found in one or more parameters. ("Parameters" include not only the parameters described as part of the call syntax, but also characteristics associated with the conversation_ID, the CRM type used by the conversation, and the transaction role (superior or subordinate) of the program.) The source of the error is considered to be inside the program definition (under the control of the local program). This return code may be caused by the failure of the program to pass a valid parameter address. The program should not examine any other returned variables associated with the call as nothing is placed in the variables. The state of the conversation remains unchanged. CM_PROGRAM_STATE_CHECK This return code may be returned under one of the following conditions: o The local program issued a call for a conversation in a state that was not valid for that call. o There is no incoming conversation. The Accept_Conversation call was issued but did not complete successfully. o No name is associated with the program. The Accept_Conversation or Accept_Incoming call was issued but did not complete successfully. o The program started but did not finish sending a logical record. o There is no outstanding operation. The Wait_For_Completion or Wait_For_Conversation call was issued but did not complete successfully. o For a conversation with sync_level set to CM_SYNC_POINT or CM_SYNC_POINT_NO_CONFIRM, the conversation's context is in the BACKOUT-REQUIRED condition. The program issued a call that is not allowed for this conversation while its context is in this condition. o The program has received a status_received value of CM_JOIN_TRANSACTION. The program issued a call that is not allowed before the program joins the transaction. o The conversation is included in a transaction. The program issued a call that is allowed only when the conversation is not currently included in a transaction. o The conversation is not currently included in a transaction. The program issued a call that is allowed only when the conversation is included in a transaction. o A prior Deferred_Deallocate call is still in effect for the conversation. The Prepare_To_Receive call was issued but is not allowed. o The program has not received a take-commit notification from its superior. The Prepare call was issued but is not allowed. The program should not examine any other returned variables associated with the call as nothing is placed in the variables. The state of the conversation remains unchanged. CM_RESOURCE_FAILURE_NO_RETRY This return code may be returned under one of the following conditions: o A failure occurred that caused the conversation to be prematurely terminated. For example, the logical connection being used for the conversation was deactivated because of a logical-connection protocol error, or the conversation was deallocated because of a protocol error between the mapped conversation components of the systems. The condition is not temporary, and the program should not retry the transaction until the condition is corrected. o The remote program terminated normally but did not deallocate the conversation before terminating. Node services at the remote system deallocated the conversation on behalf of the remote program. This return code can be reported to the local program on a call it issues for a conversation in any state other than RESET or INITIALIZE state for a half-duplex or full-duplex conversation, or SYNC-POINT, SYNC-POINT-DEALLOCATE, or DEFER-DEALLOCATE state for a full-duplex conversation. If conversation_security_type is set to CM_SECURITY_MUTUAL, then this return code may be returned on the Allocate call. For a full-duplex conversation, this return code is returned on the Receive call, at which time the conversation goes to RESET state. Calls associated with the Send queue (except the Deallocate call with deallocate_type set to CM_DEALLOCATE_ABEND) that complete before this return code is returned on the Receive call also get this return code, and the conversation is in RECEIVE-ONLY or RESET state, depending on whether the call was issued in SEND-RECEIVE or SEND-ONLY state. The conversation is in RESET state if this a half-duplex conversation. CM_RESOURCE_FAIL_NO_RETRY_BO This return code is returned only for conversations with sync_level set to CM_SYNC_POINT or CM_SYNC_POINT_NO_CONFIRM, and with the conversation included in a transaction. A failure occurred that caused the conversation to be prematurely terminated. For example, the logical connection being used for the conversation was deactivated because of a logical-connection protocol error, or the conversation was deallocated because of a protocol error between the mapped conversation components of the systems. The condition is not temporary, and the program should not retry the transaction until the condition is corrected. This return code can be reported to the local program on a call issued in any state other than RESET or INITIALIZE state. For a full-duplex conversation, incoming information may not be received if this return code is returned on a call associated with the Send queue. The conversation is in RESET state. The local conversation's context is in the BACKOUT-REQUIRED condition and the program must issue a resource recovery backout call in order to restore all of the context's protected resources to their status as of the last synchronization point. CM_RESOURCE_FAILURE_RETRY A failure occurred that caused the conversation to be prematurely terminated. For example, the logical connection being used for the conversation was deactivated because of a logical-connection outage such as a line failure, a modem failure, or a crypto engine failure. The condition may be temporary, and the program can retry the transaction. This return code can be reported to the local program on a call it issues for a conversation in any state other than RESET or INITIALIZE state for a half-duplex or full-duplex conversation, or SYNC-POINT, SYNC-POINT-DEALLOCATE, or DEFER-DEALLOCATE state for a full-duplex conversation. For a full-duplex conversation, this return code is returned on the Receive call, at which time the conversation goes to RESET state. Calls associated with the Send queue (except the Deallocate call with deallocate_type set to CM_DEALLOCATE_ABEND) that complete before this return code is returned on the Receive call also get this return code, and the conversation is in RECEIVE-ONLY or RESET state, depending on whether the call was issued in SEND-RECEIVE or SEND-ONLY state. The conversation is in RESET state if this is a half-duplex conversation. If conversation_security_type is set to CM_SECURITY_MUTUAL, then this return code may be returned on the Allocate call. CM_RESOURCE_FAILURE_RETRY_BO This return code is returned only for conversations with sync_level set to CM_SYNC_POINT or CM_SYNC_POINT_NO_CONFIRM, and with the conversation included in a transaction. A failure occurred that caused the conversation to be prematurely terminated. For example, the logical connection being used for the conversation was deactivated because of a logical-connection outage such as a line failure, a modem failure, or a crypto engine failure. The condition may be temporary, and the program can retry the transaction. This return code can be reported to the local program on a call it issues for a conversation in any state other than RESET or INITIALIZE. For a full-duplex conversation, incoming information may not be received if this return code is returned on a call associated with the Send queue. The conversation is in RESET state. The local conversation's context is in the BACKOUT-REQUIRED condition and the program must issue a resource recovery backout call in order to restore all of the context's protected resources to their status as of the last synchronization point. CM_RETRY_LIMIT_EXCEEDED The conversation cannot be allocated on a logical connection because CPI Communications has exceeded the local system's retry limit. When this return_code value is returned to the program, the conversation is in RESET state. CM_SECURITY_MUTUAL_FAILED This return code is returned only for conversations with conversation_security_type set to CM_SECURITY_MUTUAL. The local system failed the allocate request because the local system was not able to authenticate the remote system. When this return_code value is returned to the program, the conversation is in RESET state. CM_SECURITY_NOT_SUPPORTED The local system rejected the allocate request because the local program specified a required user name type and conversation security type combination that is not supported between the local and remote systems. When this return_code value is returned to the program, the conversation is in RESET state. CM_SECURITY_NOT_VALID The remote system rejected the conversation startup request because the access security information (provided by the local system) is invalid. This return code is returned on a call issued after the Allocate for a half-duplex conversation. For a full-duplex conversation, this return code is returned on the Receive call. Calls associated with the Send queue that complete before this return code is returned on the Receive call are notified of the error by a CM_ALLOCATION_ERROR return code. When this return_code value is returned to the program, the conversation is in RESET state. If conversation_security_type is set to CM_SECURITY_MUTUAL, then this return code may be returned on the Allocate call. CM_SEND_RCV_MODE_NOT_SUPPORTED This return code indicates that the conversation startup request was rejected because of one of the following: o The send_receive_mode characteristic is set to CM_HALF_DUPLEX but the remote system does not support half-duplex conversations. o The send_receive_mode characteristic is set to CM_FULL_DUPLEX but the remote system does not support full-duplex conversations. The state of the conversation remains unchanged. CM_SVC_ERROR_NO_TRUNC (LU 6.2 CRM ONLY) This return code is returned only for basic conversations. In addition, it is returned only when the remote program is using an LU 6.2 application programming interface and is not using CPI Communications. The remote LU 6.2 transaction program issued a Send_Error verb specifying a TYPE parameter of SVC, the conversation for the remote program was in SEND state for a half-duplex conversation or in SEND-RECEIVE or SEND-ONLY state for a full-duplex conversation, and the verb did not truncate a logical record. This return code is returned on a Receive call. When this return code is returned to the local program on a half-duplex conversation, the conversation is in RECEIVE state. There is no state change for a full-duplex conversation. CM_SVC_ERROR_PURGING (LU 6.2 CRM ONLY) This return code is returned only for basic half-duplex conversations. In addition, it is returned only when the remote program is using an LU 6.2 application programming interface and is not using CPI Communications. The remote LU 6.2 transaction program issued a Send_Error verb specifying a TYPE parameter of SVC; the conversation for the remote program was in RECEIVE, CONFIRM, or SYNC-POINT state; and the verb may have caused information to be purged. This return code is normally reported to the local program on a call the local program issues after sending some information to the remote program. However, the return code can be reported on a call the local program issues before sending any information, depending on the call and when it is issued. When this return code is returned to the local program, the conversation is in RECEIVE state. CM_SVC_ERROR_TRUNC (LU 6.2 CRM ONLY) This return code is returned only when the remote program is using an LU 6.2 application programming interface and is not using CPI Communications. The remote LU 6.2 transaction program issued a Send_Error verb specifying a TYPE parameter of SVC, the conversation for the remote program was in SEND state for a half-duplex conversation or in SEND-RECEIVE or SEND-ONLY state for a full-duplex conversation, and the verb truncated a logical record. Truncation occurs at the basic conversation protocol boundary when a program begins sending a logical record and then issues Send_Error before sending the complete logical record. This return code is reported to the local program on a Receive call the local program issues after receiving the truncated logical record. The state of the conversation remains unchanged. CM_SYNC_LVL_NOT_SUPPORTED_SYS This return code is returned only for conversations with sync_level set to CM_SYNC_POINT or CM_SYNC_POINT_NO_CONFIRM. The local program, running on an LU 6.2 CRM, specified a sync_level of CM_SYNC_POINT or CM_SYNC_POINT_NO_CONFIRM, which the remote system does not support. This return code is returned on the Allocate call. For a full-duplex conversation, this return code is returned on the Receive call if an attempt to allocate the conversation was made by the local program running on an OSI TP CRM and the remote system does not support the sync_level of CM_SYNC_POINT or CM_SYNC_POINT_NO_CONFIRM specified in the conversation startup request. The remote system has rejected the allocation attempt. Calls associated with the local Send queue that complete before this return code is returned on the Receive call are notified of the error by a CM_ALLOCATION_ERROR return code. When this return_code value is returned to the program, the conversation is in RESET state. CM_SYNC_LVL_NOT_SUPPORTED_PGM The remote system rejected the conversation startup request because the local program specified a synchronization level (with the sync_level parameter) that the remote program does not support. For a half-duplex conversation, this return code is returned on a call issued after the Allocate. For a full-duplex conversation, this return code is returned on the Receive call. Calls associated with the Send queue that complete before this return code is returned on the Receive call are notified of the error by a CM_ALLOCATION_ERROR return code. When this return_code value is returned to the program, the conversation is in RESET state. If conversation_security_type is set to CM_SECURITY_MUTUAL, then this return code may be returned on the Allocate call. CM_SYSTEM_EVENT The Wait_For_Conversation call was being executed when an event (such as a signal) handled by the program occurred. Wait_For_Conversation returns this return code to allow the program to reissue the Wait_For_Conversation call or to perform other processing. It is the responsibility of the event-handling portion of the program to record sufficient information for the program to decide how to proceed upon receipt of this return code. The state of the conversation remains unchanged. CM_TAKE_BACKOUT This return code is returned only for conversations with sync_level set to CM_SYNC_POINT or CM_SYNC_POINT_NO_CONFIRM, and with the conversation included in a transaction. The remote program, the local system, or the remote system issued a resource recovery backout call, and the local application must issue a backout call in order to restore all protected resources for a context to their status as of the last synchronization point. The conversation's context is in the BACKOUT-REQUIRED condition upon receipt of this return code. Once the local program issues a backout call, the conversation is placed in the state it was in at the time of the last sync point operation. CM_TPN_NOT_RECOGNIZED The remote system rejected the conversation startup request because the local program specified a remote program name that the remote system does not recognize. For a half-duplex conversation, this return code is returned on a call issued after the Allocate. For a full-duplex conversation, this return code is returned on the Receive call. Calls associated with the Send queue that complete before this return code is returned on the Receive call are notified of the error by a CM_ALLOCATION_ERROR return code. When this return_code value is returned to the program, the conversation is in RESET state. If conversation_security_type is set to CM_SECURITY_MUTUAL, then this return code may be returned on the Allocate call. CM_TP_NOT_AVAILABLE_NO_RETRY The remote system rejected the conversation startup request because the local program specified a remote program that the remote system recognizes but cannot start. The condition is not temporary, and the program should not retry the allocation request. For a half-duplex conversation, this return code is returned on a call issued after the Allocate. For a full-duplex conversation, this return code is returned on the Receive call. Calls associated with the Send queue that complete before this return code is returned on the Receive call are notified of the error by a CM_ALLOCATION_ERROR return code. When this return_code value is returned to the program, the conversation is in RESET state. If conversation_security_type is set to CM_SECURITY_MUTUAL, then this return code may be returned on the Allocate call. CM_TP_NOT_AVAILABLE_RETRY The remote system rejected the conversation startup request because the local program specified a remote program that the remote system recognizes but currently cannot start. The condition may be temporary, and the program can retry the allocation request. For a half-duplex conversation, this return code is returned on a call issued after the Allocate. For a full-duplex conversation, this return code is returned on the Receive call. Calls associated with the Send queue that complete before this return code is returned on the Receive call are notified of the error by a CM_ALLOCATION_ERROR return code. When this return_code value is returned to the program, the conversation is in RESET state. If conversation_security_type is set to CM_SECURITY_MUTUAL, then this return code may be returned on the Allocate call. CM_UNSUCCESSFUL The call issued by the local program did not execute successfully. This return code is returned on the unsuccessful call. The state of the conversation remains unchanged. --------------------- Secondary Information Associated with the return code, there may be secondary information available for the program to extract using the Extract_Secondary_Information call. The secondary information can be used to determine the cause of the return code and to aid problem determination. Based on its origin, the secondary information and associated return code can belong to one of the four types, as shown in Table 23. +--------------------------------------------------------------------+ | Table 23. Secondary Information Types and Associated Return Codes | +----------------------------------+---------------------------------+ | SECONDARY INFORMATION TYPE | ASSOCIATED RETURN CODES | +----------------------------------+---------------------------------+ | Application-oriented | CM_DEALLOCATED_ABEND | | | CM_DEALLOCATED_ABEND_BO | | | CM_DEALLOCATED_ABEND_SVC | | | CM_DEALLOCATED_ABEND_SVC_BO | | | CM_DEALLOCATED_ABEND_TIMER | | | CM_DEALLOCATED_ABEND_TIMER_BO | | | CM_PROGRAM_ERROR_NO_TRUNC | | | CM_PROGRAM_ERROR_PURGING | | | CM_PROGRAM_ERROR_TRUNC | | | CM_SVC_ERROR_NO_TRUNC | | | CM_SVC_ERROR_PURGING | | | CM_SVC_ERROR_TRUNC | +----------------------------------+---------------------------------+ | CPI Communications-defined | CM_DEALLOCATED_ABEND | | | CM_DEALLOCATED_ABEND_BO | | | CM_PARAMETER_ERROR | | | CM_PROGRAM_PARAMETER_CHECK | | | CM_PROGRAM_STATE_CHECK | | | CM_SECURITY_NOT_SUPPORTED | +----------------------------------+---------------------------------+ | CRM-specific | CM_ALLOCATE_FAILURE_NO_RETRY | | | CM_ALLOCATE_FAILURE_RETRY | | | CM_CONVERSATION_TYPE_MISMATCH | | | CM_PIP_NOT_SPECIFIED_CORRECTLY | | | CM_RESOURCE_FAIL_NO_RETRY_BO | | | CM_RESOURCE_FAILURE_NO_RETRY | | | CM_RESOURCE_FAILURE_RETRY | | | CM_RESOURCE_FAILURE_RETRY_BO | | | CM_RETRY_LIMIT_EXCEEDED | | | CM_SECURITY_MUTUAL_FAILED | | | CM_SECURITY_NOT_SUPPORTED | | | CM_SECURITY_NOT_VALID | | | CM_SEND_RCV_MODE_NOT_SUPPORTED | | | CM_SYNC_LVL_NOT_SUPPORTED_PGM | | | CM_SYNC_LVL_NOT_SUPPORTED_SYS | | | CM_TP_NOT_AVAILABLE_NO_RETRY | | | CM_TP_NOT_AVAILABLE_RETRY | | | CM_TPN_NOT_RECOGNIZED | +----------------------------------+---------------------------------+ | Implementation-related | CM_PRODUCT_SPECIFIC_ERROR | +----------------------------------+---------------------------------+ The following return codes, upon being returned to the program, are not associated with any secondary information: o CM_ALLOCATION_ERROR o CM_BUFFER_TOO_SMALL o CM_CALL_NOT_SUPPORTED o CM_CONV_DEALLOC_AFTER_SYNCPT o CM_CONVERSATION_ENDING o CM_DEALLOC_CONFIRM_REJECT o CM_DEALLOCATED_NORMAL o CM_DEALLOCATED_NORMAL_BO o CM_EXP_DATA_NOT_SUPPORTED o CM_INCLUDE_PARTNER_REJECT_BO o CM_NO_SECONDARY_INFORMATION o CM_OK o CM_OPERATION_INCOMPLETE o CM_OPERATION_NOT_ACCEPTED o CM_PARM_VALUE_NOT_SUPPORTED o CM_SYSTEM_EVENT o CM_TAKE_BACKOUT o CM_UNSUCCESSFUL Except for application-oriented information, which is defined entirely by the application, secondary information is a string of printable characters and, in general, consists of the following information in the order described: 1. Condition code 2. Description of the condition 3. Cause of the condition 4. Suggested actions 5. Additional information from the implementation For different secondary information types, the condition codes are in the range specified in Table 24. In some cases, secondary information may not have all these fields. Fields present in secondary information are separated by two consecutive semicolons. The following sections provide examples of secondary information in different types. +--------------------------------------------------------------------+ | Table 24. Range of Condition Codes for Different Secondary | | Information Types | +----------------------------------+---------------------------------+ | SECONDARY INFORMATION TYPE | CONDITION CODES | +----------------------------------+---------------------------------+ | CPI Communications-defined | 1 - 4000 | +----------------------------------+---------------------------------+ | CRM-specific | 4001 (for an LU 6.2 CRM), | | | 4002 (for an OSI TP CRM) | +----------------------------------+---------------------------------+ | Implementation-related | 4003 | +----------------------------------+---------------------------------+ Application-Oriented Information When a program discovers an abnormal condition during its processing, the program may use log data to convey the condition to its partner program. The partner program receives the log data when it issues the Extract_Secondary_Information call. Since log data is application data, it is up to the application designer to define and interpret its content. CPI Communications-Defined Information Table 25 lists all CPI Communications-defined secondary information. +--------------------------------------------------------------------+ | Table 25. CPI Communications-Defined Secondary Information | +-------------+------------------------------------------------------+ | CONDITION | DESCRIPTION | | CODE | | +-------------+------------------------------------------------------+ | Associated with CM_PROGRAM_PARAMETER_CHECK: | +-------------+------------------------------------------------------+ | 0 < n < 101 | The nth parameter specifies an invalid address. | +-------------+------------------------------------------------------+ | 101 | The conversation_ID specifies an unassigned | | | conversation identifier. | +-------------+------------------------------------------------------+ | 102 | The sync_level is set to CM_NONE. | +-------------+------------------------------------------------------+ | 103 | The sync_level is set to CM_SYNC_POINT_NO_CONFIRM. | +-------------+------------------------------------------------------+ | 104 | The send_receive_mode is set to CM_FULL_DUPLEX. | +-------------+------------------------------------------------------+ | 105 | The send_receive_mode is set to CM_FULL_DUPLEX, and | | | conversation is using an LU 6.2 CRM. | +-------------+------------------------------------------------------+ | 106 | The buffer_length specifies a value that is invalid | | | for the range permitted by the implementation. | +-------------+------------------------------------------------------+ | 107 | The conversation is using an OSI TP CRM, and the | | | program is not the superior for the conversation. | +-------------+------------------------------------------------------+ | 108 | The conversation is using an LU 6.2 CRM. | +-------------+------------------------------------------------------+ | 109 | The requested_length specifies a value less than 0. | +-------------+------------------------------------------------------+ | 110 | The transaction_control is set to | | | CM_CHAINED_TRANSACTIONS. | +-------------+------------------------------------------------------+ | 111 | The sym_dest_name specifies an unrecognized value. | +-------------+------------------------------------------------------+ | 112 | The sync_level is set to CM_CONFIRM. | +-------------+------------------------------------------------------+ | 113 | The requested_length specifies a value that exceeds | | | the range permitted by the implementation. | +-------------+------------------------------------------------------+ | 114 | The requested_length specifies a value less than 0 | | | or greater than 86. | +-------------+------------------------------------------------------+ | 115 | The expedited_receive_type specifies an undefined | | | value. | +-------------+------------------------------------------------------+ | 116 | The conversation is using an OSI TP CRM. | +-------------+------------------------------------------------------+ | 117 | The TP_name specifies a name that is not associated | | | with this program. | +-------------+------------------------------------------------------+ | 118 | The TP_name_length specifies a value less than 1 or | | | greater than 64. | +-------------+------------------------------------------------------+ | 119 | The send_length specifies a value that exceeds the | | | range permitted by the implementation. | +-------------+------------------------------------------------------+ | 120 | The conversation_type is set to | | | CM_BASIC_CONVERSATION and buffer contains an invalid | | | logical record length (LL) value of X'0000', | | | X'0001', X'8000', X'8001'. | +-------------+------------------------------------------------------+ | 121 | The send_type is set to CM_SEND_AND_PREP_TO_RECEIVE, | | | prepare_to_receive_type is set to | | | CM_PREP_TO_RECEIVE_SYNC_LEVEL, sync_level is set to | | | CM_SYNC_POINT, the conversation using an OSI TP CRM | | | is included in a transaction, and the program is not | | | the superior for the conversation. | +-------------+------------------------------------------------------+ | 122 | The send_type is set to CM_SEND_AND_PREP_TO_RECEIVE, | | | prepare_to_receive_type is set to | | | CM_PREP_TO_RECEIVE_SYNC_LEVEL, sync_level is set to | | | CM_SYNC_POINT_NO_CONFIRM, the conversation using an | | | OSI TP CRM is included in a transaction, and the | | | program is not the superior for the conversation. | +-------------+------------------------------------------------------+ | 123 | The send_type is set to CM_SEND_AND_DEALLOCATE, | | | deallocate_type is set to CM_DEALLOCATE_SYNC_LEVEL, | | | sync_level is set to CM_SYNC_POINT, the conversation | | | using an OSI TP CRM is included in a transaction, | | | and the program is not the superior for the | | | conversation. | +-------------+------------------------------------------------------+ | 124 | The send_type is set to CM_SEND_AND_DEALLOCATE, | | | deallocate_type is set to CM_DEALLOCATE_SYNC_LEVEL, | | | sync_level is set to CM_SYNC_POINT_NO_CONFIRM, the | | | conversation using an OSI TP CRM is included in a | | | transaction, and the program is not the superior for | | | the conversation. | +-------------+------------------------------------------------------+ | 125 | The send_length specifies a value less than 1 or | | | greater than 86. | +-------------+------------------------------------------------------+ | 126 | The AE_qualifier_length specifies a value less than | | | 1 or greater than 1024. | +-------------+------------------------------------------------------+ | 127 | The AE_qualifier_format specifies an undefined | | | value. | +-------------+------------------------------------------------------+ | 128 | The partner_ID is set to a non-null value. | +-------------+------------------------------------------------------+ | 129 | The allocate_confirm specifies an undefined value. | +-------------+------------------------------------------------------+ | 130 | The allocate_confirm specifies CM_ALLOCATE_CONFIRM, | | | and the conversation is using an LU 6.2 CRM. | +-------------+------------------------------------------------------+ | 131 | The AP_title_length specifies a value less than 1 or | | | greater than 1024. | +-------------+------------------------------------------------------+ | 132 | The AP_title_format specifies an undefined value. | +-------------+------------------------------------------------------+ | 133 | The application_context_name_length specifies a | | | value less than 1 or greater than 256. | +-------------+------------------------------------------------------+ | 134 | The begin_transaction specifies an undefined value. | +-------------+------------------------------------------------------+ | 135 | The confirmation_urgency specifies an undefined | | | value. | +-------------+------------------------------------------------------+ | 136 | The security_password_length specifies a value less | | | than 0 or greater than 10. | +-------------+------------------------------------------------------+ | 137 | The conversation_security_type specifies an | | | undefined value. | +-------------+------------------------------------------------------+ | 138 | The security_user_ID_length specifies a value less | | | than 0 or greater than 10. | +-------------+------------------------------------------------------+ | 139 | The conversation_type specifies an undefined value. | +-------------+------------------------------------------------------+ | 140 | The conversation_type specifies | | | CM_MAPPED_CONVERSATION, and fill is set to | | | CM_FILL_BUFFER. | +-------------+------------------------------------------------------+ | 141 | The conversation_type specifies | | | CM_MAPPED_CONVERSATION, and a prior call to | | | Set_Log_Data is still in effect. | +-------------+------------------------------------------------------+ | 142 | The deallocate_type specifies CM_DEALLOCATE_FLUSH, | | | sync_level is set to CM_SYNC_POINT, and | | | transaction_control is set to | | | CM_CHAINED_TRANSACTIONS. | +-------------+------------------------------------------------------+ | 143 | The deallocate_type specifies CM_DEALLOCATE_FLUSH, | | | sync_level is set to CM_SYNC_POINT_NO_CONFIRM, and | | | transaction_control is set to | | | CM_CHAINED_TRANSACTIONS. | +-------------+------------------------------------------------------+ | 144 | The deallocate_type specifies CM_DEALLOCATE_CONFIRM, | | | sync_level is set to CM_NONE, and the conversation | | | is using an LU 6.2 CRM. | +-------------+------------------------------------------------------+ | 145 | The deallocate_type specifies CM_DEALLOCATE_CONFIRM, | | | sync_level is set to CM_SYNC_POINT, and the | | | conversation is using an LU 6.2 CRM. | +-------------+------------------------------------------------------+ | 146 | The deallocate_type specifies CM_DEALLOCATE_CONFIRM, | | | sync_level is set to CM_SYNC_POINT_NO_CONFIRM, and | | | the conversation is using an LU 6.2 CRM. | +-------------+------------------------------------------------------+ | 147 | The deallocate_type specifies CM_DEALLOCATE_CONFIRM, | | | sync_level is set to CM_SYNC_POINT, | | | transaction_control is set to | | | CM_CHAINED_TRANSACTIONS, and the conversation is | | | using an OSI TP CRM. | +-------------+------------------------------------------------------+ | 148 | The deallocate_type specifies CM_DEALLOCATE_CONFIRM, | | | sync_level is set to CM_SYNC_POINT_NO_CONFIRM, | | | transaction_control is set to | | | CM_CHAINED_TRANSACTIONS, and the conversation is | | | using an OSI TP CRM. | +-------------+------------------------------------------------------+ | 149 | The deallocate_type specifies an undefined value. | +-------------+------------------------------------------------------+ | 150 | The error_direction specifies CM_SEND_ERROR, and the | | | conversation is using an OSI TP CRM. | +-------------+------------------------------------------------------+ | 151 | The error_direction specifies an undefined value. | +-------------+------------------------------------------------------+ | 152 | The conversation_type is set to | | | CM_MAPPED_CONVERSATION. | +-------------+------------------------------------------------------+ | 153 | The fill specifies an undefined value. | +-------------+------------------------------------------------------+ | 154 | The initialization_data_length specifies a value | | | less than 0 or greater than 10000. | +-------------+------------------------------------------------------+ | 155 | The conversation_type is set to | | | CM_MAPPED_CONVERSATION, and the conversation is | | | using an LU 6.2 CRM. | +-------------+------------------------------------------------------+ | 156 | The log_data_length specifies a value less than 0 or | | | greater than 512. | +-------------+------------------------------------------------------+ | 157 | The map_name_length specifies a value less than 0 or | | | greater than 8. | +-------------+------------------------------------------------------+ | 158 | The partner_ID_type specifies an undefined value. | +-------------+------------------------------------------------------+ | 159 | The partner_ID_type specifies CM_PROGRAM_BINDING, | | | and partner_ID_length specifies a value less than 0 | | | or greater than 32767. | +-------------+------------------------------------------------------+ | 160 | The partner_ID_type specifies CM_DISTINGUISHED_NAME | | | or CM_PROGRAM_FUNCTION_ID, and partner_ID_length | | | specifies a value less than 0 or greater than 1024. | +-------------+------------------------------------------------------+ | 161 | The partner_ID_scope specifies an undefined value. | +-------------+------------------------------------------------------+ | 162 | The directory_syntax specifies an undefined value. | +-------------+------------------------------------------------------+ | 163 | The directory_encoding specifies an undefined value. | +-------------+------------------------------------------------------+ | 164 | The partner_LU_name_length specifies a value less | | | than 1 or greater than 17. | +-------------+------------------------------------------------------+ | 165 | The prepare_data_permitted specifies | | | CM_PREPARE_DATA_PERMITTED, and the conversation is | | | using an LU 6.2 CRM. | +-------------+------------------------------------------------------+ | 166 | The prepare_data_permitted specifies an undefined | | | value. | +-------------+------------------------------------------------------+ | 167 | The prepare_to_receive_type specifies | | | CM_PREP_TO_RECEIVE_CONFIRM, and sync_level set to | | | CM_NONE. | +-------------+------------------------------------------------------+ | 168 | The prepare_to_receive_type specifies | | | CM_PREP_TO_RECEIVE_CONFIRM, and sync_level set to | | | CM_SYNC_POINT_NO_CONFIRM. | +-------------+------------------------------------------------------+ | 169 | The prepare_to_receive_type specifies an undefined | | | value. | +-------------+------------------------------------------------------+ | 170 | The processing_mode specifies an undefined value. | +-------------+------------------------------------------------------+ | 171 | The program has chosen queue-level non-blocking for | | | the conversation. | +-------------+------------------------------------------------------+ | 172 | The conversation_queue specifies a value that is not | | | defined for the send_receive_mode conversation | | | characteristic. | +-------------+------------------------------------------------------+ | 173 | The program has chosen conversation-level | | | non-blocking for the conversation. | +-------------+------------------------------------------------------+ | 174 | The queue_processing_mode specifies an undefined | | | value. | +-------------+------------------------------------------------------+ | 175 | The receive_type specifies an undefined value. | +-------------+------------------------------------------------------+ | 176 | The return_control specifies an undefined value. | +-------------+------------------------------------------------------+ | 177 | The send_receive_mode specifies CM_FULL_DUPLEX, and | | | sync_level is set to CM_CONFIRM. | +-------------+------------------------------------------------------+ | 178 | The send_receive_mode specifies CM_FULL_DUPLEX, and | | | sync_level is set to CM_SYNC_POINT. | +-------------+------------------------------------------------------+ | 179 | The send_receive_mode specifies CM_FULL_DUPLEX, and | | | send_type is set to CM_SEND_AND_PREP_TO_RECEIVE. | +-------------+------------------------------------------------------+ | 180 | The send_receive_mode specifies CM_FULL_DUPLEX, and | | | the program has chosen conversation-level | | | non-blocking for the conversation. | +-------------+------------------------------------------------------+ | 181 | The send_receive_mode specifies an undefined value. | +-------------+------------------------------------------------------+ | 182 | The send_type specifies CM_SEND_AND_CONFIRM, and | | | sync_level is set to CM_NONE. | +-------------+------------------------------------------------------+ | 183 | The send_type specifies CM_SEND_AND_CONFIRM, and | | | sync_level is set to CM_SYNC_POINT_NO_CONFIRM. | +-------------+------------------------------------------------------+ | 184 | The send_type specifies CM_SEND_AND_CONFIRM, and | | | send_receive_mode is set to CM_FULL_DUPLEX. | +-------------+------------------------------------------------------+ | 185 | The send_type specifies CM_SEND_AND_PREP_TO_RECEIVE, | | | and send_receive_mode is set to CM_FULL_DUPLEX. | +-------------+------------------------------------------------------+ | 186 | The send_type specifies an undefined value. | +-------------+------------------------------------------------------+ | 187 | The sync_level specifies CM_NONE, deallocate_type is | | | set to CM_DEALLOCATE_CONFIRM, and the conversation | | | is using an LU 6.2 CRM. | +-------------+------------------------------------------------------+ | 188 | The sync_level specifies CM_NONE, send_receive_mode | | | is set to CM_HALF_DUPLEX, and | | | prepare_to_receive_type is set to | | | CM_PREP_TO_RECEIVE_CONFIRM. | +-------------+------------------------------------------------------+ | 189 | The sync_level specifies CM_NONE, send_receive_mode | | | is set to CM_HALF_DUPLEX, and send_type is set to | | | CM_SEND_AND_CONFIRM. | +-------------+------------------------------------------------------+ | 190 | The sync_level specifies CM_SYNC_POINT_NO_CONFIRM, | | | send_receive_mode is set to CM_HALF_DUPLEX, and | | | send_type is set to CM_SEND_AND_CONFIRM. | +-------------+------------------------------------------------------+ | 191 | The sync_level specifies CM_CONFIRM, and | | | send_receive_mode is set to CM_FULL_DUPLEX. | +-------------+------------------------------------------------------+ | 192 | The sync_level specifies CM_SYNC_POINT, and | | | send_receive_mode is set to CM_FULL_DUPLEX. | +-------------+------------------------------------------------------+ | 193 | The sync_level specifies CM_SYNC_POINT, | | | deallocate_type is set to CM_DEALLOCATE_FLUSH, and | | | the conversation is using an LU 6.2 CRM. | +-------------+------------------------------------------------------+ | 194 | The sync_level specifies CM_SYNC_POINT, | | | deallocate_type is set to CM_DEALLOCATE_CONFIRM, and | | | the conversation is using an LU 6.2 CRM. | +-------------+------------------------------------------------------+ | 195 | The sync_level specifies CM_SYNC_POINT_NO_CONFIRM, | | | deallocate_type is set to CM_DEALLOCATE_FLUSH, and | | | the conversation is using an LU 6.2 CRM. | +-------------+------------------------------------------------------+ | 196 | The sync_level specifies CM_SYNC_POINT_NO_CONFIRM, | | | deallocate_type is set to CM_DEALLOCATE_CONFIRM, and | | | the conversation is using an LU 6.2 CRM. | +-------------+------------------------------------------------------+ | 197 | The sync_level specifies CM_SYNC_POINT_NO_CONFIRM, | | | send_receive_mode is set to CM_HALF_DUPLEX, and the | | | conversation is using an LU 6.2 CRM. | +-------------+------------------------------------------------------+ | 198 | The sync_level specifies an undefined value. | +-------------+------------------------------------------------------+ | 199 | The transaction_control specifies | | | CM_UNCHAINED_TRANSACTIONS, and the conversation is | | | using an LU 6.2 CRM. | +-------------+------------------------------------------------------+ | 200 | The transaction_control specifies an undefined | | | value. | +-------------+------------------------------------------------------+ | 201 | The TP_name_length specifies a value less than 1 or | | | greater than 64. | +-------------+------------------------------------------------------+ | 202 | The TP_name specifies a name that is restricted in | | | some way by node services. | +-------------+------------------------------------------------------+ | 203 | The TP_name has incorrect internal syntax as defined | | | by node services. | +-------------+------------------------------------------------------+ | 204 | The TP_name_length specifies a value less than 1 or | | | greater than 64. | +-------------+------------------------------------------------------+ | 205 | The OOID_list_count specifies a value less than 1. | +-------------+------------------------------------------------------+ | 206 | The number of OOIDs in OOID_list is less than the | | | value specified in OOID_list_count. | +-------------+------------------------------------------------------+ | 207 | The OOID_list contains an unassigned OOID. | +-------------+------------------------------------------------------+ | 208 | The timeout specifies a value less than 0. | +-------------+------------------------------------------------------+ | 209 - 1000 | Reserved for future conditions to be associated with | | | CM_PROGRAM_PARAMETER_CHECK. | +-------------+------------------------------------------------------+ | Associated with CM_PROGRAM_STATE_CHECK: | +-------------+------------------------------------------------------+ | 1001 | No incoming conversation exists. | +-------------+------------------------------------------------------+ | 1002 | No name is associated with the program. A program | | | associates a name with itself by issuing the | | | Specify_Local_TP_Name call. | +-------------+------------------------------------------------------+ | 1003 | The conversation is not in INITIALIZE-INCOMING | | | state. | +-------------+------------------------------------------------------+ | 1004 | The conversation is not in INITIALIZE state. | +-------------+------------------------------------------------------+ | 1005 | The conversation's context is in the | | | BACKOUT-REQUIRED condition. | +-------------+------------------------------------------------------+ | 1006 | The conversation is not in SEND, SEND-PENDING, or | | | DEFER-RECEIVE state. | +-------------+------------------------------------------------------+ | 1007 | The conversation is basic, and the program started | | | but did not finish sending a logical record. | +-------------+------------------------------------------------------+ | 1008 | The conversation is not in CONFIRM, CONFIRM-SEND, or | | | CONFIRM-DEALLOCATE state. | +-------------+------------------------------------------------------+ | 1009 | The conversation is not in CONFIRM-DEALLOCATE state. | +-------------+------------------------------------------------------+ | 1010 | The conversation is not in SEND or SEND-PENDING | | | state. | +-------------+------------------------------------------------------+ | 1011 | The deallocate_type is set to CM_DEALLOCATE_FLUSH, | | | and the conversation is currently included in a | | | transaction. | +-------------+------------------------------------------------------+ | 1012 | The deallocate_type is set to CM_DEALLOCATE_CONFIRM, | | | and the conversation is currently included in a | | | transaction. | +-------------+------------------------------------------------------+ | 1013 | The program has received a status_received value of | | | CM_JOIN_TRANSACTION and must issue a tx_begin call | | | to the X/Open TX interface to join the transaction. | +-------------+------------------------------------------------------+ | 1014 | The conversation is not in SEND-RECEIVE or SEND-ONLY | | | state. | +-------------+------------------------------------------------------+ | 1015 | The conversation is not in SEND-RECEIVE state. | +-------------+------------------------------------------------------+ | 1016 | The conversation is not currently included in a | | | transaction. | +-------------+------------------------------------------------------+ | 1017 | The conversation is in INITIALIZE-INCOMING state. | +-------------+------------------------------------------------------+ | 1018 | The conversation is in INITIALIZE state. | +-------------+------------------------------------------------------+ | 1019 | The conversation's context is not in transaction. | | | The program must issue a tx_begin call to the X/Open | | | TX interface to start a transaction. | +-------------+------------------------------------------------------+ | 1020 | The conversation is already included in the current | | | transaction. | +-------------+------------------------------------------------------+ | 1021 | The conversation is using an OSI TP CRM, | | | begin_transaction is set to CM_BEGIN_EXPLICIT, and | | | the conversation is not currently included in a | | | transaction. | +-------------+------------------------------------------------------+ | 1022 | The conversation is using an OSI TP CRM, and the | | | program is not the root of the transaction and has | | | not received a take-commit notification from its | | | superior. | +-------------+------------------------------------------------------+ | 1023 | A prior call to Deferred_Deallocate is still in | | | effect for the conversation. | +-------------+------------------------------------------------------+ | 1024 | The receive_type is set to CM_RECEIVE_AND_WAIT, and | | | the conversation is not in SEND, RECEIVE, | | | SEND-PENDING, or PREPARED state. | +-------------+------------------------------------------------------+ | 1025 | The receive_type is set to CM_RECEIVE_IMMEDIATE, and | | | the conversation is not in RECEIVE or PREPARED | | | state. | +-------------+------------------------------------------------------+ | 1026 | The conversation is not in SEND-RECEIVE, | | | RECEIVE-ONLY, or PREPARED state. | +-------------+------------------------------------------------------+ | 1027 | The conversation is not in SEND, RECEIVE, | | | SEND-PENDING, CONFIRM, CONFIRM-SEND, | | | CONFIRM-DEALLOCATE, SYNC-POINT, SYNC-POINT-SEND, | | | SYNC-POINT-DEALLOCATE, or PREPARED state. | +-------------+------------------------------------------------------+ | 1028 | For a conversation using an OSI TP CRM, the | | | Request_To_Send call is not allowed from SEND state. | +-------------+------------------------------------------------------+ | 1029 | The conversation is not in SEND, SEND-PENDING, | | | SYNC-POINT, SYNC-POINT-SEND, or | | | SYNC-POINT-DEALLOCATE state. | +-------------+------------------------------------------------------+ | 1030 | The program received a take-commit notification not | | | ending in *_DATA_OK, and the conversation is in | | | SYNC-POINT, SYNC-POINT-SEND, or | | | SYNC-POINT-DEALLOCATE state. | +-------------+------------------------------------------------------+ | 1031 | The send_type is set to CM_SEND_AND_CONFIRM or | | | CM_SEND_AND_PREP_TO_RECEIVE, and the conversation is | | | in SYNC-POINT, SYNC-POINT-SEND, or | | | SYNC-POINT-DEALLOCATE state. | +-------------+------------------------------------------------------+ | 1032 | The send_type is set to CM_SEND_AND_DEALLOCATE, | | | deallocate_type is not set to CM_DEALLOCATE_ABEND, | | | and the conversation is in SYNC-POINT, | | | SYNC-POINT-SEND, or SYNC-POINT-DEALLOCATE state. | +-------------+------------------------------------------------------+ | 1033 | The send_type is set to CM_SEND_AND_DEALLOCATE, | | | deallocate_type is set to CM_DEALLOCATE_FLUSH, | | | sync_level is set to CM_SYNC_POINT, and the | | | conversation is included in a transaction. | +-------------+------------------------------------------------------+ | 1034 | The send_type is set to CM_SEND_AND_DEALLOCATE, | | | deallocate_type is set to CM_DEALLOCATE_FLUSH, | | | sync_level is set to CM_SYNC_POINT_NO_CONFIRM, and | | | the conversation is included in a transaction. | +-------------+------------------------------------------------------+ | 1035 | The send_type is set to CM_SEND_AND_DEALLOCATE, | | | deallocate_type is set to CM_DEALLOCATE_CONFIRM, | | | sync_level is set to CM_SYNC_POINT, and the | | | conversation is included in a transaction. | +-------------+------------------------------------------------------+ | 1036 | The send_type is set to CM_SEND_AND_DEALLOCATE, | | | deallocate_type is set to CM_DEALLOCATE_CONFIRM, | | | sync_level is set to CM_SYNC_POINT_NO_CONFIRM, and | | | the conversation is included in a transaction. | +-------------+------------------------------------------------------+ | 1037 | The conversation is not in SEND-RECEIVE, SEND-ONLY, | | | SYNC-POINT, or SYNC-POINT-DEALLOCATE state. | +-------------+------------------------------------------------------+ | 1038 | The program received a take-commit notification not | | | ending in *_DATA_OK, and the conversation is in | | | SYNC-POINT or SYNC-POINT-DEALLOCATE state. | +-------------+------------------------------------------------------+ | 1039 | The send_type is set to CM_SEND_AND_DEALLOCATE, | | | deallocate_type is not set to CM_DEALLOCATE_ABEND, | | | and the conversation is in SYNC-POINT or | | | SYNC-POINT-DEALLOCATE state. | +-------------+------------------------------------------------------+ | 1040 | The conversation is not in SEND-RECEIVE, SEND-ONLY, | | | or CONFIRM-DEALLOCATE state. | +-------------+------------------------------------------------------+ | 1041 | The conversation_security_type is not set to | | | CM_SECURITY_PROGRAM or CM_SECURITY_PROGRAM_STRONG. | +-------------+------------------------------------------------------+ | 1042 | The conversation is not in INITIALIZE or | | | INITIALIZE-INCOMING state. | +-------------+------------------------------------------------------+ | 1043 | The conversation is not in INITIALIZE or RECEIVE | | | state. | +-------------+------------------------------------------------------+ | 1044 | The conversation is not in INITIALIZE or | | | SEND-RECEIVE state. | +-------------+------------------------------------------------------+ | 1045 | The conversation_queue specifies | | | CM_INITIALIZATION_QUEUE, and the conversation is not | | | in INITIALIZE or INITIALIZE-INCOMING state. | +-------------+------------------------------------------------------+ | 1046 | The conversation_queue specifies a value other than | | | CM_INITIALIZATION_QUEUE, and the conversation is in | | | INITIALIZE-INCOMING state. | +-------------+------------------------------------------------------+ | 1047 | The conversation is not in SEND, RECEIVE, | | | SEND-PENDING, DEFER-RECEIVE, or DEFER-DEALLOCATE | | | state. | +-------------+------------------------------------------------------+ | 1048 | There is no outstanding operation associated with | | | any of the OOIDs specified in OOID_list or by use of | | | a defined value of OOID_list_count has completed. | +-------------+------------------------------------------------------+ | 1049 | There were no conversation-level outstanding | | | operations for the program. | +-------------+------------------------------------------------------+ | 1050 | The sync_level is set to CM_SYNC_POINT or | | | CM_SYNC_POINT_NO_CONFIRM, transaction_control is set | | | to CM_CHAINED_TRANSACTIONS, and the conversation's | | | context is not in transaction. | +-------------+------------------------------------------------------+ | 1051 - 2000 | Reserved for future conditions to be associated with | | | CM_PROGRAM_STATE_CHECK. | +-------------+------------------------------------------------------+ | Associated with CM_PARAMETER_ERROR: | +-------------+------------------------------------------------------+ | 2001 | The mode_name characteristic (set from side | | | information or by Set_Mode_Name) specifies a mode | | | name that is not recognized by the LU as being | | | valid. | +-------------+------------------------------------------------------+ | 2002 | The mode_name characteristic (set from side | | | information or by Set_Mode_Name) specifies a mode | | | name that the local program does not have the | | | authority to specify. For example, SNASVCMG | | | requires special authority with LU 6.2. | +-------------+------------------------------------------------------+ | 2003 | The TP_name characteristic (set from side | | | information or by Set_TP_Name) specifies a | | | transaction program name that the local program does | | | not have the appropriate authority to allocate a | | | conversation to. For example, SNA service programs | | | require special authority with LU 6.2. | +-------------+------------------------------------------------------+ | 2004 | The TP_name characteristic (set from side | | | information or by Set_TP_Name) specifies an SNA | | | service transaction program and conversation_type is | | | set to CM_MAPPED_CONVERSATION. | +-------------+------------------------------------------------------+ | 2005 | The partner_LU_name characteristic (set from side | | | information or by Set_Partner_LU_Name) specifies a | | | partner LU name that is not recognized as being | | | valid. | +-------------+------------------------------------------------------+ | 2006 | The AP_title characteristic (set from side | | | information or using Set_AP_Title call or the | | | AE_qualifier characteristic (set from side | | | information or using Set_AE_Qualifier call) | | | specifies an AP title or an AE qualifier that is not | | | recognized as being valid. | +-------------+------------------------------------------------------+ | 2007 | The conversation_security_type characteristic is set | | | to CM_SECURITY_PROGRAM or | | | CM_SECURITY_PROGRAM_STRONG, and the | | | security_password characteristic or the | | | security_user_ID characteristic (set from side | | | information or by Set calls) or both, are null. | +-------------+------------------------------------------------------+ | 2008 | The conversation_security_type characteristic is set | | | to CM_SECURITY_DISTRIBUTED or CM_SECURITY_MUTUAL, | | | and the partner principal name (set from the program | | | binding) is null or is not recognized by the CRM as | | | being valid. | +-------------+------------------------------------------------------+ | 2009 | A partner_ID characteristic was provided that caused | | | a search of the distributed directory, but no | | | program binding was retrieved. | +-------------+------------------------------------------------------+ | 2010 | The program binding for the conversation, either | | | specified directly on the Set_Partner_ID call or | | | obtained from the distributed directory, was | | | invalid. | +-------------+------------------------------------------------------+ | 2011 - 2500 | Reserved for future conditions to be associated with | | | CM_PARAMETER_ERROR. | +-------------+------------------------------------------------------+ | Associated with CM_SECURITY_NOT_SUPPORTED: | +-------------+------------------------------------------------------+ | 2501 | The conversation_security_type does not provide for | | | the user name type indicated by the | | | required_user_name_type field in the program | | | binding. | +-------------+------------------------------------------------------+ | 2502 - 3000 | Reserved for future conditions to be associated with | | | CM_SECURITY_NOT_SUPPORTED. | +-------------+------------------------------------------------------+ | Associated with CM_DEALLOCATED_ABEND (full-duplex conversations | | using an OSI TP CRM only): | +-------------+------------------------------------------------------+ | 3001 | There was a collision between a Deallocate call with | | | deallocate_type set to CM_DEALLOCATE_CONFIRM issued | | | by the local program and an | | | Include_Partner_In_Transaction call issued by the | | | partner program. No log data is available. | +-------------+------------------------------------------------------+ | 3002 | There was a collision between a Deallocate call with | | | deallocate_type set to CM_DEALLOCATE_CONFIRM issued | | | by the local program and a Deallocate call with | | | deallocate_type set to CM_DEALLOCATE_CONFIRM call | | | issued by the partner program. No log data is | | | available. | +-------------+------------------------------------------------------+ | 3003 - 3500 | Reserved for future conditions to be associated with | | | CM_DEALLOCATED_ABEND. | +-------------+------------------------------------------------------+ | Associated with CM_DEALLOCATED_ABEND_BO (full-duplex conversations | | using an OSI TP CRM only): | +-------------+------------------------------------------------------+ | 3501 | There was a collision between a | | | Include_Partner_In_Transaction call issued by the | | | local program and a Deallocate call with | | | deallocate_type set to CM_DEALLOCATE_CONFIRM issued | | | by the partner program. No log data is available. | +-------------+------------------------------------------------------+ | 3502 - 4000 | Reserved for future conditions to be associated with | | | CM_DEALLOCATED_ABEND_BO. | +-------------+------------------------------------------------------+ CRM-Specific Secondary Information When the underlying CRM discovers an abnormal condition, the condition, identified by a CRM-specific message, is then mapped to a CPI Communications return code and returned to the program. The CRM-specific message is the SNA sense data information for the CRM type of LU 6.2 and OSI diagnostic information for the CRM type of OSI TP. +--------------------------------------------------------------------+ | Table 26. Examples of LU 6.2 CRM-Specific Secondary Information | +--------------------------------------------------------------------+ | Associated with CM_CONVERSATION_TYPE_MISMATCH: | +--------------------------------------------------------------------+ | | | 4001;;1008 6034 The FMH-5 Attach command specifies a | | conversation type that the receiver does not support for the | | specified transaction program. This sense data is sent only | | in FMH-7. | | | +--------------------------------------------------------------------+ | Associated with CM_TPN_NOT_RECOGNIZED: | +--------------------------------------------------------------------+ | | | 4001;;1008 6021 Transaction Program Name Not Recognized: The | | FMH-5 Attach command specifies a transaction program name that | | the receiver does not recognize. This sense data is sent only | | in FMH-7. | | | +--------------------------------------------------------------------+ | Associated with CM_SYNC_LVL_NOT_SUPPORTED_SYS: | +--------------------------------------------------------------------+ | | | 4001;;1008 6040 Invalid Attach Parameter: A parameter in the | | FMH-5 Attach command conflicts with the statements of LU | | capability previously provided in the BIND negotiation. | | | +--------------------------------------------------------------------+ | NOTE: See Chapter 10 of System Network Architecture Formats (IBM | | document number GA27-3136) for complete information about sense | | data. | +--------------------------------------------------------------------+ +--------------------------------------------------------------------+ | Table 27. Examples of OSI TP CRM-Specific Secondary Information | +--------------------------------------------------------------------+ | Associated with CM_RESOURCE_FAILURE_NO_RETRY, | | CM_RESOURCE_FAIL_NO_RETRY_BO: | +--------------------------------------------------------------------+ | | | 4002;;recipient-unknown. | | | +--------------------------------------------------------------------+ | | | 4002;;no-reason-given. | | | +--------------------------------------------------------------------+ | | | 4002;;permanent-failure. | | | +--------------------------------------------------------------------+ | | | 4002;;protocol-error. | | | +--------------------------------------------------------------------+ | Associated with CM_TPN_NOT_RECOGNIZED: | +--------------------------------------------------------------------+ | | | 4002;;recipient-tpsu-title-unknown. | | | +--------------------------------------------------------------------+ | | | 4002;;recipient-tpsu-title-required. | | | +--------------------------------------------------------------------+ | Associated with CM_SYNC_LEVEL_NOT_SUPPORTED_SYS: | +--------------------------------------------------------------------+ | | | 4002;;functional-unit-not-supported. | | | +--------------------------------------------------------------------+ | | | 4002;;functional-unit-combination-not-supported. | | | +--------------------------------------------------------------------+ Implementation-Related Information An implementation may return CM_PRODUCT_SPECIFIC_ERROR to the program for any errors that are specific to the implementation or to the system that supports the implementation. In this case, secondary information is the error message defined by the implementation or system. +--------------------------------------------------------------------+ | Table 28. Examples of Implementation-Related Secondary Information | +--------------------------------------------------------------------+ | Example 1: | +--------------------------------------------------------------------+ | 4003;;0001 STACK_TOO_SMALL;;A minimum stack size of 3500 bytes is | | required by CPI-C when a call is issued. CPI-C runs on the stack | | of the program that calls it. When the call was issued, CPI-C | | found the stack size to be less than the minimum size.;;PROGRAMMER | | RESPONSE: Increase the stack size specified in the ".DEF" file | | used in linking. If your program calls CPI-C from a thread it has | | created, be sure the stack size on the NewThreadStack parameter of | | your DosCreateThread function call is large enough. | +--------------------------------------------------------------------+ | Example 2: | +--------------------------------------------------------------------+ | 4003;;0002 CANNOT_ALLOCATE_SHARED_SEGMENT;;Communications Manager | | could not allocate the shared segment named | | \SHAREMEM\ACSLGMEM.;;PROGRAMMER RESPONSE: A necessary shared | | segment is not currently available. There is no corrective action | | that your program can take. This problem will recur until the | | Communications Manager is stopped and restarted. OPERATOR | | RESPONSE: Communications Manager must be restarted to correct the | | problem. | +--------------------------------------------------------------------+ ---------------------------------------------------------------------------------------------------------------------------------- Appendix C. State Tables The CPI Communications state tables show when and where different CPI Communications calls can be issued. For example, a program must issue an Initialize_Conversation call before issuing an Allocate call, and it cannot issue a Send_Data call before the conversation is allocated. As described in "Program Flow--States and Transitions" on page 1, CPI Communications uses the concepts of states and state transitions to simplify explanations of the restrictions that are placed on the calls. A number of states are defined for CPI Communications and, for any given call, a number of transitions are allowed. o Table 29 describes the state transitions that are allowed for the CPI Communications calls on half-duplex conversations. o Table 32 describes the state transitions that are allowed for CPI Communications calls on full-duplex conversations. o Table 30 shows the effects of SAA resource recovery Commit and Backout calls on CPI Communications conversation states for half-duplex conversations. o Table 31 shows the effects of X/Open TX resource recovery calls on CPI Communications conversation states for half-duplex conversations. o Table 33 shows the effects of SAA resource recovery calls on CPI Communications conversation states for full-duplex conversations. o Table 34 shows the effects of X/Open TX resource recovery calls on CPI Communications conversation states for full-duplex conversations. --------------------------- How to Use the State Tables Each CPI Communications call(5) is represented in the table by a group of input rows. The possible conversation states are shown across the top of the table. The states correspond to the columns of the matrix. The intersection of input (row) and state (column) represents the validity of a CPI Communications call in that particular state and, for valid calls, what state transition (if any) occurs. The first row of each call input grouping (delineated by horizontal lines) contains the name of the call and a symbol in each state column showing whether the call is valid for that state. A call is valid for a given state only if that state's column contains a downward pointing arrow (V) on this row. If the [sc] or [pc] symbol appears in a state's column, the call is invalid for that state and receives a return code of CM_PROGRAM_STATE_CHECK or CM_PROGRAM_PARAMETER_CHECK, respectively. No state transitions occur for invalid CPI Communications calls. The remaining input rows in the call group show the state transitions for valid calls. The transition from one conversation state to another often depends on the value of the return code returned by the call; therefore, a given call group may have several rows, each showing the state transitions for a particular return code or set of return codes. For calls that are processed in non-blocking processing mode, the following special considerations apply: o When a call gets the CM_OPERATION_INCOMPLETE return code, the operation remains in progress as an oustanding operation on the conversation (when conversation-level non-blocking is used) or on the queue with which the call is associated (when queue-level non-blocking is used). Any other calls (except Cancel_Conversation) on that conversation or queue get a return code of CM_OPERATION_NOT_ACCEPTED, and no conversation state transition occurs. o The CM_OPERATION_NOT_ACCEPTED return code is not included in the state table. For conversations with sync_level set to CM_SYNC_POINT or CM_SYNC_POINT_NO_CONFIRM, the following special considerations apply: o A state transition symbol ending with a plus sign (for example, 1+ or -+), means that the conversation's context may be in the BACKOUT-REQUIRED condition following the call. (Note that the state change for the conversation is indicated by the FIRST character of these symbols.) o When a context is in the BACKOUT-REQUIRED condition, its protected conversations are restricted from issuing certain CPI Communications calls. These calls are designated in the table with the symbol V'. Where this symbol appears, the call is valid in this state unless the conversation is protected and its context is in the BACKOUT-REQUIRED condition. If the call is invalid, a return_code of CM_PROGRAM_STATE_CHECK is returned and no conversation state transition occurs. Example For an example of how the half-duplex state table might be used, look at the group of input rows for the DEALLOCATE(C) call. The (C) here means that this group is for the Deallocate call when either deallocate_type is set to CM_DEALLOCATE_CONFIRM or deallocate_type is set to CM_DEALLOCATE_SYNC_LVL and sync_level is set to CM_CONFIRM. The first row in this group shows that this call is valid only when the conversation is in SEND or SEND-PENDING state. For all other states, either the call is invalid and a return_code of CM_PROGRAM_PARAMETER_CHECK or CM_PROGRAM_STATE_CHECK is returned, or the call is not possible. Beneath the input row containing DEALLOCATE(C), there are several rows showing the possible return codes returned by this call. Since the call is valid only in SEND and SEND-PENDING states, only these states' columns contain transition values on these rows. These transition values provide the following information: o The conversation goes from SEND or SEND-PENDING state to RESET state (state 1) when a return code abbreviated as "ok," "da," or "rf" is returned. See "Return Code Values [ ]" to find out what these abbreviations mean. o The conversation goes from SEND state to RESET state when a return code abbreviated as "ae" is returned. A return code abbreviated as "ae" will never be returned when this call is issued from SEND-PENDING state. o The conversation goes from SEND or SEND-PENDING state to RECEIVE state (state 4) when a return code abbreviated as "ep" is returned. o There is no state transition when a return code of CM_PROGRAM_PARAMETER_CHECK ("pc") or CM_OPERATION_INCOMPLETE ("oi") is returned. o There is no state transition for a conversation in SEND state when a return code of CM_PROGRAM_STATE_CHECK ("sc") is returned. This return code will never be returned when this call is issued from SEND-PENDING state. ---------------------------------------------------- Explanation of Half-Duplex State Table Abbreviations Abbreviations are used in the state table to indicate the different permutations of calls and characteristics. There are four categories of abbreviations: o CONVERSATION CHARACTERISTIC abbreviations are enclosed by parentheses-- ( . . . ) o CONVERSATION QUEUE abbreviations are enclosed by parentheses-- ( . . . ) o RETURN_CODE abbreviations are enclosed by brackets -- [ . . . ] o DATA_RECEIVED AND STATUS_RECEIVED abbreviations are enclosed by parentheses and separated by a comma-- (dr,sr) The abbreviation before the comma represents the data_received value, and the abbreviation after the comma represents the value of status_received. NOTE: Curly braces are used to mark these values in the published version of the state table. However, because curly braces do not display on some terminals, all curly braces have been removed from this online state table and replaced with parentheses. The next sections show the abbreviations used in each category. Conversation Characteristics ( ) The following abbreviations are used for conversation characteristics: +-------------+------------------------------------------------------+ | ABBREVIATION| MEANING | +-------------+------------------------------------------------------+ | A | deallocate_type is set to CM_DEALLOCATE_ABEND | +-------------+------------------------------------------------------+ | B | send_type is set to CM_BUFFER_DATA | +-------------+------------------------------------------------------+ | C | For a Deallocate call, C means one of the following: | | | | | | o deallocate_type is set to CM_DEALLOCATE_CONFIRM | | | o deallocate_type is set to | | | CM_DEALLOCATE_SYNC_LEVEL and sync_level is set | | | to CM_CONFIRM | | | o deallocate_type is set to | | | CM_DEALLOCATE_SYNC_LEVEL and sync_level is set | | | to CM_SYNC_POINT, but the conversation is not | | | currently included in a transaction | | | | | | For a Prepare_To_Receive call, C means one of the | | | following: | | | | | | o prepare_to_receive_type is set to | | | CM_PREP_TO_RECEIVE_CONFIRM | | | o prepare_to_receive_type is set to | | | CM_PREP_TO_RECEIVE_SYNC_LEVEL and sync_level is | | | set to CM_CONFIRM | | | o prepare_to_receive_type is set to | | | CM_PREP_TO_RECEIVE_SYNC_LEVEL and sync_level is | | | set to CM_SYNC_POINT, but the conversation is | | | not currently included in a transaction | | | | | | For a Send_Data call, C means the following: | | | | | | o send_type is set to CM_SEND_AND_CONFIRM | | | | +-------------+------------------------------------------------------+ | D(x) | send_type is set to CM_SEND_AND_DEALLOCATE. x | | | represents the deallocate_type and can be A, C, F, | | | or S. Refer to the appropriate entries in this | | | table for a description of these values. | +-------------+------------------------------------------------------+ | F | For a Deallocate call, F means one of the following: | | | | | | o deallocate_type is set to CM_DEALLOCATE_FLUSH | | | o deallocate_type is set to | | | CM_DEALLOCATE_SYNC_LEVEL and either sync_level | | | is set to CM_NONE or the conversation is in | | | INITIALIZE_INCOMING state | | | o deallocate_type is set to | | | CM_DEALLOCATE_SYNC_LEVEL and sync_level is set | | | to CM_SYNC_POINT_NO_CONFIRM, but the | | | conversation is not currently included in a | | | transaction | | | | | | For a Prepare_To_Receive call, F means one of the | | | following: | | | | | | o prepare_to_receive_type is set to | | | CM_PREP_TO_RECEIVE_FLUSH | | | o prepare_to_receive_type is set to | | | CM_PREP_TO_RECEIVE_SYNC_LEVEL and sync_level is | | | set to CM_NONE | | | o prepare_to_receive_type is set to | | | CM_PREP_TO_RECEIVE_SYNC_LEVEL and sync_level is | | | set to CM_SYNC_POINT_NO_CONFIRM, but the | | | conversation is not currently included in a | | | transaction | | | | | | For a Send_Data call, F means the following: | | | | | | o send_type is set to CM_SEND_AND_FLUSH | | | | +-------------+------------------------------------------------------+ | I | receive_type is set to CM_RECEIVE_IMMEDIATE | +-------------+------------------------------------------------------+ | P(x) | send_type is set to CM_SEND_AND_PREP_TO_RECEIVE. x | | | represents the prepare_to_receive_type and can be C, | | | F, or S. Refer to the appropriate entries in this | | | table for a description of these values. | +-------------+------------------------------------------------------+ | S | For a Deallocate call, S means the following: | | | | | | o deallocate_type is set to | | | CM_DEALLOCATE_SYNC_LEVEL, sync_level is set to | | | CM_SYNC_POINT or CM_SYNC_POINT_NO_CONFIRM, and | | | the conversation is currently included in a | | | transaction | | | | | | For a Prepare_To_Receive call, S means the | | | following: | | | | | | o prepare_to_receive_type is set to | | | CM_PREP_TO_RECEIVE_SYNC_LEVEL, sync_level is set | | | to CM_SYNC_POINT or CM_SYNC_POINT_NO_CONFIRM, | | | and the conversation is currently included in a | | | transaction | | | | +-------------+------------------------------------------------------+ | W | receive_type is set to CM_RECEIVE_AND_WAIT. | +-------------+------------------------------------------------------+ Conversation Queues () The following abbreviations are used for conversation queues: +-------------+------------------------------------------------------+ | ABBREVIATION| MEANING | +-------------+------------------------------------------------------+ | N | conversation_queue is set to CM_INITIALIZATION_QUEUE | +-------------+------------------------------------------------------+ | Q | conversation_queue is set to one of the following: | | | | | | o CM_SEND_RECEIVE_QUEUE | | | o CM_EXPEDITED_SEND_QUEUE | | | o CM_EXPEDITED_RECEIVE_QUEUE | | | | +-------------+------------------------------------------------------+ Return Code Values [ ] The following abbreviations are used for return codes: +-------------+------------------------------------------------------+ | ABBREVIATION| MEANING | +-------------+------------------------------------------------------+ | ae | For an Allocate call, ae means one of the following: | | | | | | o CM_ALLOCATE_FAILURE_NO_RETRY | | | o CM_ALLOCATE_FAILURE_RETRY | | | o CM_SECURITY_NOT_VALID | | | o CM_SECURITY_NOT_SUPPORTED | | | o CM_SECURITY_MUTUAL_FAILED | | | o CM_SEND_RCV_MODE_NOT_SUPPORTED | | | o CM_CONVERSATION_TYPE_MISMATCH | | | o CM_PIP_NOT_SPECIFIED_CORRECTLY | | | o CM_RETRY_LIMIT_EXCEEDED | | | o CM_SYNC_LVL_NOT_SUPPORTED_PGM | | | o CM_SYNC_LVL_NOT_SUPPORTED_SYS | | | o CM_TPN_NOT_RECOGNIZED | | | o CM_TP_NOT_AVAILABLE_NO_RETRY | | | o CM_TP_NOT_AVAILABLE_RETRY | | | o CM_RESOURCE_FAILURE_NO_RETRY | | | o CM_RESOURCE_FAILURE_RETRY | | | | | | For any other call, ae means one of the following: | | | | | | o CM_CONVERSATION_TYPE_MISMATCH | | | o CM_PIP_NOT_SPECIFIED_CORRECTLY | | | o CM_SECURITY_NOT_VALID | | | o CM_SEND_RCV_MODE_NOT_SUPPORTED | | | o CM_SYNC_LVL_NOT_SUPPORTED_PGM | | | o CM_SYNC_LVL_NOT_SUPPORTED_SYS | | | o CM_TPN_NOT_RECOGNIZED | | | o CM_TP_NOT_AVAILABLE_NO_RETRY | | | o CM_TP_NOT_AVAILABLE_RETRY | | | | +-------------+------------------------------------------------------+ | bo | CM_TAKE_BACKOUT. This return code is returned only | | | for conversations with sync_level set to | | | CM_SYNC_POINT or CM_SYNC_POINT_NO_CONFIRM. | +-------------+------------------------------------------------------+ | da | da means one of the following: | | | | | | o CM_DEALLOCATED_ABEND | | | o CM_DEALLOCATED_ABEND_SVC | | | o CM_DEALLOCATED_ABEND_TIMER | | | | +-------------+------------------------------------------------------+ | db | db is returned only for conversations with | | | sync_level set to CM_SYNC_POINT or | | | CM_SYNC_POINT_NO_CONFIRM and means one of the | | | following: | | | | | | o CM_DEALLOCATED_ABEND_BO | | | o CM_DEALLOCATED_ABEND_SVC_BO | | | o CM_DEALLOCATED_ABEND_TIMER_BO | | | | +-------------+------------------------------------------------------+ | dn | CM_DEALLOCATED_NORMAL | +-------------+------------------------------------------------------+ | dnb | CM_DEALLOCATED_NORMAL_BO. This return code is | | | returned only for conversations with sync_level set | | | to CM_SYNC_POINT or CM_SYNC_POINT_NO_CONFIRM. | +-------------+------------------------------------------------------+ | ed | ed means one of the following: | | | | | | o CM_EXP_DATA_NOT_SUPPORTED | | | o CM_BUFFER_TOO_SMALL | | | o CM_CONVERSATION_ENDING | | | | +-------------+------------------------------------------------------+ | en | en means one of the following: | | | | | | o CM_PROGRAM_ERROR_NO_TRUNC | | | o CM_SVC_ERROR_NO_TRUNC | | | | +-------------+------------------------------------------------------+ | ep | ep means one of the following: | | | | | | o CM_PROGRAM_ERROR_PURGING | | | o CM_SVC_ERROR_PURGING | | | | +-------------+------------------------------------------------------+ | et | et means one of the following: | | | | | | o CM_PROGRAM_ERROR_TRUNC | | | o CM_SVC_ERROR_TRUNC | | | | +-------------+------------------------------------------------------+ | ns | CM_NO_SECONDARY_INFORMATION | +-------------+------------------------------------------------------+ | oi | CM_OPERATION_INCOMPLETE | +-------------+------------------------------------------------------+ | ok | CM_OK | +-------------+------------------------------------------------------+ | pb | CM_INCLUDE_PARTNER_REJECT_BO | +-------------+------------------------------------------------------+ | pc | CM_PROGRAM_PARAMETER_CHECK. This return code means | | | an error was found in one or more parameters. For | | | calls illegally issued in RESET state, pc is | | | returned because the conversation_ID is undefined in | | | that state. | +-------------+------------------------------------------------------+ | pe | CM_PARAMETER_ERROR | +-------------+------------------------------------------------------+ | pn | CM_PARM_VALUE_NOT_SUPPORTED | +-------------+------------------------------------------------------+ | rb | rb means one of the following: | | | | | | o CM_RESOURCE_FAIL_NO_RETRY_BO | | | o CM_RESOURCE_FAILURE_RETRY_BO | | | | +-------------+------------------------------------------------------+ | rf | rf means one of the following: | | | | | | o CM_RESOURCE_FAILURE_NO_RETRY | | | o CM_RESOURCE_FAILURE_RETRY | | | | +-------------+------------------------------------------------------+ | sc | CM_PROGRAM_STATE_CHECK | +-------------+------------------------------------------------------+ | se | CM_SYSTEM_EVENT | +-------------+------------------------------------------------------+ | un | CM_UNSUCCESSFUL | +-------------+------------------------------------------------------+ NOTES: 1. The return code CM_PRODUCT_SPECIFIC_ERROR is not included in the state table because the state transitions caused by this return code are product-specific. 2. The CM_OPERATION_NOT_ACCEPTED return code is not included in the state table. If conversation-level non-blocking is being used on a conversation, a program receives CM_OPERATION_NOT_ACCEPTED when it issues any call (except Cancel_Conversation) on the conversation while a previous operation is still in progress, regardless of the state. If conversation-level non-blocking is not being used on a conversation, a program receives CM_OPERATION_NOT_ACCEPTED when it issues any call associated with a queue that has a previous operation still in progress, regardless of the state. No conversation state transition occurs. 3. The CM_CALL_NOT_SUPPORTED return code is not included in the state table. It is returned when the local system provides an entry point for the call but does not support the function requested by the call, regardless of the state. No state transition occurs. data_received and status_received ( , ) The following abbreviations are used for the data_received values: +-------------+------------------------------------------------------+ | ABBREVIATION| MEANING | +-------------+------------------------------------------------------+ | dr | Means one of the following: | | | | | | o CM_DATA_RECEIVED | | | o CM_COMPLETE_DATA_RECEIVED | | | o CM_INCOMPLETE_DATA_RECEIVED | | | | +-------------+------------------------------------------------------+ | nd | CM_NO_DATA_RECEIVED | +-------------+------------------------------------------------------+ | * | Means one of the following: | | | | | | o CM_DATA_RECEIVED | | | o CM_COMPLETE_DATA_RECEIVED | | | o CM_NO_DATA_RECEIVED | | | | +-------------+------------------------------------------------------+ The following abbreviations are used for the status_received values: +-------------+------------------------------------------------------+ | ABBREVIATION| MEANING | +-------------+------------------------------------------------------+ | cd | CM_CONFIRM_DEALLOC_RECEIVED | +-------------+------------------------------------------------------+ | co | CM_CONFIRM_RECEIVED | +-------------+------------------------------------------------------+ | cs | CM_CONFIRM_SEND_RECEIVED | +-------------+------------------------------------------------------+ | jt | CM_JOIN_TRANSACTION | +-------------+------------------------------------------------------+ | no | CM_NO_STATUS_RECEIVED | +-------------+------------------------------------------------------+ | po | CM_PREPARE_OK | +-------------+------------------------------------------------------+ | se | CM_SEND_RECEIVED | +-------------+------------------------------------------------------+ | tc | CM_TAKE_COMMIT or CM_TAKE_COMMIT_DATA_OK. These | | | values are returned only for conversations with | | | sync_level set to CM_SYNC_POINT or | | | CM_SYNC_POINT_NO_CONFIRM. | +-------------+------------------------------------------------------+ | td | CM_TAKE_COMMIT_DEALLOCATE or | | | CM_TAKE_COMMIT_DEALLOC_DATA_OK. These values are | | | returned only for conversations with sync_level set | | | to CM_SYNC_POINT or CM_SYNC_POINT_NO_CONFIRM. | +-------------+------------------------------------------------------+ | ts | CM_TAKE_COMMIT_SEND or CM_TAKE_COMMIT_SEND_DATA_OK. | | | These values are returned only for conversations | | | with sync_level set to CM_SYNC_POINT or | | | CM_SYNC_POINT_NO_CONFIRM. | +-------------+------------------------------------------------------+ Table Symbols for the Half-Duplex State Table The following symbols are used in the state table to indicate the condition that results when a call is issued from a certain state: NOTE: Some of the symbols used in the state table for the published book cannot be displayed on a terminal. This online version of the table makes the following substitutions: PRINTED SYMBOL ONLINE SYMBOL DOWN ARROW Capital V CARET (UPSIDE DOWN V) Plus sign + Also, some of the column headings do not format properly in the online state table. For a full, accurate view of the table, please see the published book, SC31-6180. +-------------+------------------------------------------------------+ | SYMBOL | MEANING | +-------------+------------------------------------------------------+ | / | Cannot occur. CPI Communications either will not | | | allow this input or will never return the indicated | | | return codes for this input in this state. | +-------------+------------------------------------------------------+ | - | Remain in current state | +-------------+------------------------------------------------------+ | 1-18 | Number of next state | +-------------+------------------------------------------------------+ | V | It is valid to make this call from this state. See | | | the table entries immediately below this symbol to | | | determine the state transition resulting from the | | | call. | +-------------+------------------------------------------------------+ | V' | For a conversation not using sync_level set to | | | CM_SYNC_POINT or CM_SYNC_POINT_NO_CONFIRM, or not | | | currently included in a transaction, this is | | | equivalent to V. If the conversation has sync_level | | | set to CM_SYNC_POINT or CM_SYNC_POINT_NO_CONFIRM and | | | the conversation is currently included in a | | | transaction, however, V' means it is valid to make | | | this call from this state unless the conversation's | | | context is in the BACKOUT-REQUIRED condition. In | | | that case, the call is invalid and | | | CM_PROGRAM_STATE_CHECK is returned. For valid | | | calls, see the table entries immediately below this | | | symbol to determine the state transition resulting | | | from the call. | +-------------+------------------------------------------------------+ | + | For a conversation not using sync_level set to | | | CM_SYNC_POINT or CM_SYNC_POINT_NO_CONFIRM or not | | | currently included in a transaction, this symbol | | | should be ignored. For a conversation using | | | sync_level set to CM_SYNC_POINT or | | | CM_SYNC_POINT_NO_CONFIRM and currently included in a | | | transaction, when this symbol follows a state number | | | or a - (for example, 1+ or -+), it means the | | | conversation's context may be in the | | | BACKOUT-REQUIRED condition following the call. | +-------------+------------------------------------------------------+ | # | A conversation with sync_level set to CM_SYNC_POINT | | | or CM_SYNC_POINT_NO_CONFIRM and currently included | | | in a transaction goes to the state it was in at the | | | completion of the most recent synchronization point. | | | If there was no prior synchronization event, the | | | side of the conversation that was initialized with | | | an Allocate call goes to SEND state, and the side of | | | the conversation that accepted the conversation goes | | | to RECEIVE state. | +-------------+------------------------------------------------------+ | % | Wait_For_Completion and Wait_For_Conversation can | | | only be issued when one or more calls have received | | | a return_code of CM_OPERATION_INCOMPLETE. When | | | Wait_For_Completion or Wait_For_Conversation | | | completes with a return_code of CM_OK, it indicates | | | one or more conversations on which an operation has | | | completed. Each of those conversations then moves | | | to the appropriate state as determined by the return | | | code for the operation that is now completed and by | | | the other factors that determine state transitions. | +-------------+------------------------------------------------------+ | ? | For programs using the X/Open TX interface with | | | sync_level set to CM_SYNC_POINT or | | | CM_SYNC_POINT_NO_CONFIRM, the state of the | | | conversation with respect to the transaction is | | | unknown. | +-------------+------------------------------------------------------+ +--------------------------------------------------------------------------------------------------------------------------------+ | Table 29. States and Transitions for CPI Communications Calls on Half-Duplex Conversations | +----------------------+------------------------------------------------------+----------------------------------------+---------+ | | STATES 1-8 AND 14 ARE | USED ONLY BY CONVERSATIONS WITH | | | | USED BY ALL CONVERSATIONS | sync_level SET TO CM_SYNC_POINT | | | | | OR CM_SYNC_POINT_NO_CONFIRM | | | +------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | INPUTS | RESET| INI- | SEND | RE- | SEND-| CON- | CON-| CON- | DEFER| DEFER| SYNC-| SYNC-| SYNC| PRE- | INI- | | | | TIALI|E | CEIVE| PEND-| FIRM | FIRM| FIRM-| RE- | DEAL-| POINT| POINT| POIN| PARED| TIALIZE-| | | | | | | ING | | SEND| DEAL-| CEIVE| LOCAT| | SEND | DEAL| | IN- | | | | | | | | | | LOCAT| | | | | LOCA|E | COMING | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 18 | 14 | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | ACCEPT_CONVERSATION | V | / | / | / | / | / | / | / | / | / | / | / | / | / | / | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [ok] | 4 | | | | | | | | | | | | | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [sc] | - | | | | | | | | | | | | | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | | | | | | | | | | | | | | | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | ACCEPT_INCOMING | [pc] | [sc] | [sc] | [sc] | [sc] | [sc] | [sc]| [sc] | [sc] | [sc] | [sc] | [sc] | [sc]| [sc] | V | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [ok] | | | | | | | | | | | | | | | 4 | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [oi,pc,sc] | | | | | | | | | | | | | | | - | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | | | | | | | | | | | | | | | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | ALLOCATE | [pc] | V' | [sc] | [sc] | [sc] | [sc] | [sc]| [sc] | [sc] | [sc] | [sc] | [sc] | [sc]| [sc] | [sc] | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [ok] | | 3 | | | | | | | | | | | | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [ae] | | 1 | | | | | | | | | | | | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [oi,pc,pe,un] | | - | | | | | | | | | | | | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | | | | | | | | | | | | | | | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | CANCEL_CONVERSATION | [pc] | V | V | V | V | V | V | V | V | V | V | V | V | V | V | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [ok] | | 1+ | 1+ | 1+ | 1+ | 1+ | 1+ | 1+ | 1+ | 1+ | 1+ | 1+ | 1+ | 1+ | 1+ | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [pc] | | - | - | - | - | - | - | - | - | - | - | - | - | - | - | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | | | | | | | | | | | | | | | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | CONFIRM | [pc] | [sc] | V' | [sc] | V' | [sc] | [sc]| [sc] | V' | [sc] | [sc] | [sc] | [sc]| [sc] | [sc] | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [ok] | | | - | | 3 | | | | 4 | | | | | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [ae] | | | 1 | | / | | | | 1 | | | | | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [bo] | | | -+ | | 3+ | | | | 4+ | | | | | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [da,rf] | | | 1 | | 1 | | | | 1 | | | | | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [db,pb,rb] | | | 1+ | | 1+ | | | | 1+ | | | | | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [ep] | | | 4 | | 4 | | | | 4 | | | | | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [oi,pc] | | | - | | - | | | | - | | | | | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [sc] | | | - | | / | | | | / | | | | | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | | | | | | | | | | | | | | | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | CONFIRMED | [pc] | [sc] | [sc] | [sc] | [sc] | V' | V' | V' | [sc] | [sc] | [sc] | [sc] | [sc]| [sc] | [sc] | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [ok] | | | | | | 4 | 3 | 1 | | | | | | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [oi,pc] | | | | | | - | - | - | | | | | | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | | | | | | | | | | | | | | | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | DEALLOCATE(A) | [pc] | V | V | V | V | V | V | V | V | V | V | V | V | V | / | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [ok] | | 1 | 1+ | 1+ | 1+ | 1+ | 1+ | 1+ | 1+ | 1+ | 1+ | 1+ | 1+ | 1+ | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [oi,pc] | | - | - | - | - | - | - | - | - | - | - | - | - | - | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | | | | | | | | | | | | | | | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | DEALLOCATE(C) | [pc] | [sc] | V | [sc] | V | [sc] | [sc]| [sc] | / | / | / | / | / | / | / | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [ok,da,rf] | | | 1 | | 1 | | | | | | | | | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [ae] | | | 1 | | / | | | | | | | | | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [ep] | | | 4 | | 4 | | | | | | | | | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [oi,pc] | | | - | | - | | | | | | | | | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [sc] | | | - | | / | | | | | | | | | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | | | | | | | | | | | | | | | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | DEALLOCATE(F) | [pc] | [sc] | V | [sc] | V | [sc] | [sc]| [sc] | / | / | / | / | / | / | V | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [ok] | | | 1 | | 1 | | | | | | | | | | 1 | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [oi,pc] | | | - | | - | | | | | | | | | | - | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [sc] | | | - | | / | | | | | | | | | | / | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | | | | | | | | | | | | | | | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | DEALLOCATE(S) | [pc] | [sc] | V' | [sc] | V' | [sc] | [sc]| [sc] | [sc] | [sc] | [sc] | [sc] | [sc]| [sc] | / | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [ok] | | | 10 | | 10 | | | | | | | | | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [oi,pc] | | | - | | - | | | | | | | | | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [sc] | | | - | | / | | | | | | | | | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | | | | | | | | | | | | | | | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | DEFERRED_DEALLOCATE(6| [pc] | [sc] | V' | [sc] | V' | [sc] | [sc]| [sc] | [sc] | [sc] | [sc] | [sc] | [sc]| [sc] | [sc] | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [ok] | | | -(7) | | -(7) | | | | | | | | | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [ae] | | | 1 | | / | | | | | | | | | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [bo] | | | -&car|t. | 3&car|t. | | | | | | | | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [db,rb] | | | 1&car|t. | 1&car|t. | | | | | | | | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [ep] | | | 4 | | 4 | | | | | | | | | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [oi,pc] | | | - | | - | | | | | | | | | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [pb] | | | 1&car|t. | / | | | | | | | | | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | | | | | | | | | | | | | | | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | EXTRACT_AE_QUALIFIER | [pc] | V | V | V | V | V | V | V | V | V | V | V | V | V | [sc] | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [ok,pc] | | - | - | - | - | - | - | - | - | - | - | - | - | - | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | | | | | | | | | | | | | | | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | EXTRACT_AP_TITLE | [pc] | V | V | V | V | V | V | V | V | V | V | V | V | V | [sc] | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [ok,pc] | | - | - | - | - | - | - | - | - | - | - | - | - | - | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | | | | | | | | | | | | | | | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | EXTRACT_APPL_CTX_NAME| [pc] | V | V | V | V | V | V | V | V | V | V | V | V | V | [sc] | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [ok,pc] | | - | - | - | - | - | - | - | - | - | - | - | - | - | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | | | | | | | | | | | | | | | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | EXTRACT_CONV_CONTEXT | [pc] | [sc] | V | V | V | V | V | V | V | V | V | V | V | V | [sc] | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [ok,sc] | | | - | - | - | - | - | - | - | - | - | - | - | - | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | | | | | | | | | | | | | | | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | EXTRACT_CONV_STATE | [pc] | V | V | V | V | V | V | V | V | V | V | V | V | V | V | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [ok,pc] | | - | - | - | - | - | - | - | - | - | - | - | - | - | - | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [bo] | | / | - | - | - | - | - | / | - | - | - | - | - | - | / | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | | | | | | | | | | | | | | | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | EXTRACT_CONV_TYPE | [pc] | V | V | V | V | V | V | V | V | V | V | V | V | V | [sc] | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [ok,pc] | | - | - | - | - | - | - | - | - | - | - | - | - | - | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | | | | | | | | | | | | | | | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | EXTRACT_INIT_DATA | [pc] | V | V | V | V | V | V | V | V | V | V | V | V | V | [sc] | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [ok,pc] | | - | - | - | - | - | - | - | - | - | - | - | - | - | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | | | | | | | | | | | | | | | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | EXTRACT_MODE_NAME | [pc] | V | V | V | V | V | V | V | V | V | V | V | V | V | [sc] | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [ok,pc] | | - | - | - | - | - | - | - | - | - | - | - | - | - | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | | | | | | | | | | | | | | | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | EXTRACT_PART_LU_NAME | [pc] | V | V | V | V | V | V | V | V | V | V | V | V | V | [sc] | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [ok,pc] | | - | - | - | - | - | - | - | - | - | - | - | - | - | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | | | | | | | | | | | | | | | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | EXTRACT_PARTNER_ID | V | V | V | V | V | V | V | V | V | V | V | V | V | V | [sc] | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [ok,ed,pc] | - | - | - | - | - | - | - | - | - | - | - | - | - | - | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | | | | | | | | | | | | | | | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | EXTR_SEC_USER_ID | [pc] | V | V | V | V | V | V | V | V | V | V | V | V | V | [sc] | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [ok,pc] | | - | - | - | - | - | - | - | - | - | - | - | - | - | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | | | | | | | | | | | | | | | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | EXTRACT_SECONDARY_INF| V | V | V | V | V | V | V | V | V | V | V | V | V | V | V | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [ok,ns,pc] | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | | | | | | | | | | | | | | | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | EXTR_SEND_RCV_MODE | [pc] | V | V | V | V | V | V | V | V | V | V | V | V | V | [sc] | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [ok,pc] | | - | - | - | - | - | - | - | - | - | - | - | - | - | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | | | | | | | | | | | | | | | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | EXTRACT_SYNC_LEVEL | [pc] | V | V | V | V | V | V | V | V | V | V | V | V | V | [sc] | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [ok,pc] | | - | - | - | - | - | - | - | - | - | - | - | - | - | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | | | | | | | | | | | | | | | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | EXTR_TRANSACTION_CONT|O[pc] | V | V | V | V | V | V | V | V | V | V | V | V | V | [sc] | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [ok,pc] | | - | - | - | - | - | - | - | - | - | - | - | - | - | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | | | | | | | | | | | | | | | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | EXTRACT_TP_NAME | [pc] | V | V | V | V | V | V | V | V | V | V | V | V | V | [sc] | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [ok,pc] | | - | - | - | - | - | - | - | - | - | - | - | - | - | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | | | | | | | | | | | | | | | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | FLUSH | [pc] | [sc] | V' | [sc] | V' | [sc] | [sc]| [sc] | V' | [sc] | [sc] | [sc] | [sc]| [sc] | [sc] | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [ok] | | | - | | 3 | | | | 4 | | | | | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [oi,pc] | | | - | | - | | | | - | | | | | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | | | | | | | | | | | | | | | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | INCLUDE_PTR_IN_TRANS(|)[pc] | [sc] | V' | [sc] | V' | [sc] | [sc]| [sc] | [sc] | [sc] | [sc] | [sc] | [sc]| [sc] | [sc] | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [ok] | | | - | | 3 | | | | | | | | | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [ae] | | | 1 | | / | | | | | | | | | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [da,rf] | | | 1 | | 1 | | | | | | | | | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [ep] | | | 4 | | 4 | | | | | | | | | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [oi,pc,sc] | | | - | | - | | | | | | | | | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | | | | | | | | | | | | | | | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | INIT_CONVERSATION(8) | V | / | / | / | / | / | / | / | / | / | / | / | / | / | / | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [ok] | 2 | | | | | | | | | | | | | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [pc] | - | | | | | | | | | | | | | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | | | | | | | | | | | | | | | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | INIT_FOR_INCOMING | V | / | / | / | / | / | / | / | / | / | / | / | / | / | / | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [ok] | 14 | | | | | | | | | | | | | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | | | | | | | | | | | | | | | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | PREPARE | [pc] | [sc] | V' | [sc] | V' | [sc] | [sc]| [sc] | V' | V' | [sc] | [sc] | [sc]| [sc] | [sc] | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [ok] | | | 18 | | 18 | | | | 18 | 18 | | | | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [ae] | | | 1 | | / | | | | 1 | 1 | | | | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [bo] | | | -&car|t. | -&car|t. | | | -&car|t-&car|t. | | | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [db,pb,rb] | | | 1&car|t. | 1&car|t. | | | 1&car|t1&car|t. | | | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [ep] | | | 4 | | 4 | | | | 4 | 4 | | | | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [oi,pc,sc] | | | - | | - | | | | - | - | | | | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | | | | | | | | | | | | | | | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | PREPARE_TO_RECEIVE(C)| [pc] | [sc] | V' | [sc] | V' | [sc] | [sc]| [sc] | [sc] | [sc] | [sc] | [sc] | [sc]| [sc] | [sc] | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [ok,ep] | | | 4 | | 4 | | | | | | | | | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [ae] | | | 1 | | / | | | | | | | | | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [bo] | | | 4+ | | 4+ | | | | | | | | | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [da,rf] | | | 1 | | 1 | | | | | | | | | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [db,pb,rb] | | | 1+ | | 1+ | | | | | | | | | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [oi,pc] | | | - | | - | | | | | | | | | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [sc] | | | - | | / | | | | | | | | | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | | | | | | | | | | | | | | | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | PREPARE_TO_RECEIVE(F)| [pc] | [sc] | V' | [sc] | V' | [sc] | [sc]| [sc] | [sc] | [sc] | [sc] | [sc] | [sc]| [sc] | [sc] | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [ok] | | | 4 | | 4 | | | | | | | | | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [oi,pc] | | | - | | - | | | | | | | | | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [sc] | | | - | | / | | | | | | | | | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | | | | | | | | | | | | | | | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | PREPARE_TO_RECEIVE(S)| [pc] | [sc] | V' | [sc] | V' | [sc] | [sc]| [sc] | [sc] | [sc] | [sc] | [sc] | [sc]| [sc] | [sc] | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [ok] | | | 9 | | 9 | | | | | | | | | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [oi,pc] | | | - | | - | | | | | | | | | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [sc] | | | - | | / | | | | | | | | | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | | | | | | | | | | | | | | | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | RECEIVE(I) | [pc] | [sc] | [sc] | V' | [sc] | [sc] | [sc]| [sc] | [sc] | [sc] | [sc] | [sc] | [sc]| V' | [sc] | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [ok] (dr,no) | | | | - | | | | | | | | | | - | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [ok] (dr,se) | | | | 5 | | | | | | | | | | / | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [ok] (nd,se) | | | | 3 | | | | | | | | | | / | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [ok] (*,cd) | | | | 8 | | | | | | | | | | / | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [ok] (*,co) | | | | 6 | | | | | | | | | | / | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [ok] (*,cs) | | | | 7 | | | | | | | | | | / | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [ok] (*,jt) | | | | - | | | | | | | | | | / | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [ok] (*,po) | | | | / | | | | | | | | | | - | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [ok] (*,tc) | | | | 11 | | | | | | | | | | / | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [ok] (*,td) | | | | 13 | | | | | | | | | | / | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [ok] (*,ts) | | | | 12 | | | | | | | | | | / | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [ae] | | | | 1 | | | | | | | | | | 1 | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [bo] | | | | -+ | | | | | | | | | | -+ | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [da,dn,rf] | | | | 1 | | | | | | | | | | / | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [db,pb,rb] | | | | 1+ | | | | | | | | | | 1+ | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [en,ep] | | | | - | | | | | | | | | | 4 | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [et] | | | | - | | | | | | | | | | / | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [pc,sc,un] | | | | - | | | | | | | | | | - | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | | | | | | | | | | | | | | | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | RECEIVE(W) | [pc] | [sc] | V' | V' | V' | [sc] | [sc]| [sc] | [sc] | [sc] | [sc] | [sc] | [sc]| V' | [sc] | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [ok] (dr,no) | | | 4 | - | 4 | | | | | | | | | - | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [ok] (dr,se) | | | 5 | 5 | - | | | | | | | | | / | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [ok] (nd,se) | | | - | 3 | 3 | | | | | | | | | / | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [ok] (*,cd) | | | 8 | 8 | 8 | | | | | | | | | / | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [ok] (*,co) | | | 6 | 6 | 6 | | | | | | | | | / | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [ok] (*,cs) | | | 7 | 7 | 7 | | | | | | | | | / | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [ok] (*,jt) | | | - | - | / | | | | | | | | | / | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [ok] (*,po) | | | / | / | / | | | | | | | | | - | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [ok] (*,tc) | | | 11 | 11 | 11 | | | | | | | | | / | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [ok] (*,td) | | | 13 | 13 | 13 | | | | | | | | | / | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [ok] (*,ts) | | | 12 | 12 | 12 | | | | | | | | | / | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [ae] | | | 1 | 1 | / | | | | | | | | | 1 | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [bo] | | | 4+ | -+ | 4+ | | | | | | | | | -+ | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [da,dn,rf] | | | 1 | 1 | 1 | | | | | | | | | / | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [db,pb,rb] | | | 1+ | 1+ | 1+ | | | | | | | | | 1+ | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [en,ep] | | | 4 | - | 4 | | | | | | | | | 4 | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [et] | | | / | - | / | | | | | | | | | / | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [oi,pc] | | | - | - | - | | | | | | | | | - | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [sc] | | | - | - | / | | | | | | | | | - | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | | | | | | | | | | | | | | | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | RCV_EXP_DATA | [pc] | [sc] | V | V | V | V | V | V | V | V | V | V | V | V | [sc] | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [ok,ed,oi,pc] | | | - | - | - | - | - | - | - | - | - | - | - | - | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | | | | | | | | | | | | | | | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | REQUEST_TO_SEND(9) | [pc] | [sc] | V' | V' | V' | V' | V' | V' | [sc] | [sc] | V' | V' | V' | V' | [sc] | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [oi,ok,pc] | | | - | - | - | - | - | - | | | - | - | - | - | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [sc] | | | / | - | / | / | / | / | | | / | / | / | / | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | | | | | | | | | | | | | | | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | SEND_DATA | [pc] | [sc] | V' | [sc] | V' | [sc] | [sc]| [sc] | [sc] | [sc] | V' | V' | V' | [sc] | [sc] | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | (B) [ok] | | | - | | 3 | | | | | | - | - | - | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | (C) [ok] | | | - | | 3 | | | | | | / | / | / | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | (D(A)) [ok] | | | 1+ | | 1+ | | | | | | 1+ | 1+ | 1+ | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | (D(C)) [ok] | | | 1 | | 1 | | | | | | / | / | / | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | (D(F)) [ok] | | | 1 | | 1 | | | | | | / | / | / | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | (D(S)) [ok] | | | 10 | | 10 | | | | | | / | / | / | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | (F) [ok] | | | - | | 3 | | | | | | - | - | - | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | (P(C)) [ok] | | | 4 | | 4 | | | | | | / | / | / | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | (P(F)) [ok] | | | 4 | | 4 | | | | | | / | / | / | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | (P(S)) [ok] | | | 9 | | 9 | | | | | | / | / | / | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [ae] | | | 1 | | / | | | | | | / | / | / | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [bo] | | | -+ | | 3+ | | | | | | -+ | -+ | -+ | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [da,rf] | | | 1 | | 1 | | | | | | / | / | / | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [db,rb] | | | 1+ | | 1+ | | | | | | 1+ | 1+ | 1+ | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [ep] | | | 4 | | 4 | | | | | | / | / | / | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [oi,pc] | | | - | | - | | | | | | - | - | - | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [pb] | | | 1+ | | / | | | | | | / | / | / | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [sc] | | | - | | / | | | | | | - | - | - | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | | | | | | | | | | | | | | | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | SEND_ERROR | [pc] | [sc] | V' | V' | V' | V' | V' | V' | [sc] | [sc] | V' | V' | V' | [sc] | [sc] | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [ok] | | | - | 3 | 3 | 3 | 3 | 3 | | | 3 | 3 | 3 | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [ae,da] | | | 1 | 1 | / | / | / | / | | | / | / | / | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [bo] | | | -+ | -+ | 3+ | / | / | / | | | -&car|t-&car|t-&ca|et. | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [db] | | | 1+ | 1+ | / | / | / | / | | | / | / | / | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [dn] | | | / | 1 | / | / | / | / | | | / | / | / | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [dnb] | | | / | 1+ | / | / | / | / | | | / | / | / | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [ep] | | | 4 | - | / | / | / | / | | | / | / | / | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [oi,pc] | | | - | - | - | - | - | - | | | - | - | - | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [pb] | | | 1&car|t1&car|t. / | / | / | / | | | / | / | / | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [rb] | | | 1+ | 1+ | 1+ | 1+ | 1+ | 1+ | | | 1+ | 1+ | 1+ | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [rf] | | | 1 | 1 | 1 | 1 | 1 | 1 | | | 1 | 1 | 1 | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [sc] | | | - | - | / | / | / | / | | | - | - | - | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | | | | | | | | | | | | | | | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | SEND_EXP_DATA | [pc] | [sc] | V | V | V | V | V | V | V | V | V | V | V | V | [sc] | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [ok,ed,oi,pc] | | | - | - | - | - | - | - | - | - | - | - | - | - | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | | | | | | | | | | | | | | | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | SET_AE_QUALIFIER | [pc] | V | [sc] | [sc] | [sc] | [sc] | [sc]| [sc] | [sc] | [sc] | [sc] | [sc] | [sc]| [sc] | [sc] | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [ok,pc] | | - | | | | | | | | | | | | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | | | | | | | | | | | | | | | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | SET_ALLOCATE_CONFIRM | [pc] | V | [sc] | [sc] | [sc] | [sc] | [sc]| [sc] | [sc] | [sc] | [sc] | [sc] | [sc]| [sc] | [sc] | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [ok,pc] | | - | | | | | | | | | | | | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | | | | | | | | | | | | | | | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | SET_AP_TITLE | [pc] | V | [sc] | [sc] | [sc] | [sc] | [sc]| [sc] | [sc] | [sc] | [sc] | [sc] | [sc]| [sc] | [sc] | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [ok,pc] | | - | | | | | | | | | | | | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | | | | | | | | | | | | | | | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | SET_APPL_CONTEXT_NAME| [pc] | V | [sc] | [sc] | [sc] | [sc] | [sc]| [sc] | [sc] | [sc] | [sc] | [sc] | [sc]| [sc] | [sc] | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [ok,pc] | | - | | | | | | | | | | | | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | | | | | | | | | | | | | | | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | SET_BEGIN_TRANSACTION| [pc] | V | V | V | V | V | V | V | V | V | V | V | V | V | [sc] | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [ok,pc] | | - | - | - | - | - | - | - | - | - | - | - | - | - | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | | | | | | | | | | | | | | | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | SET_CONFIRMATION_URGE|C[pc] | V | V | V | V | V | V | V | V | V | V | V | V | V | V | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [ok,pc] | | - | - | - | - | - | - | - | - | - | - | - | - | - | - | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | | | | | | | | | | | | | | | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | SET_CONV_SEC_PW | [pc] | V | [sc] | [sc] | [sc] | [sc] | [sc]| [sc] | [sc] | [sc] | [sc] | [sc] | [sc]| [sc] | [sc] | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [ok,pc] | | - | | | | | | | | | | | | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | | | | | | | | | | | | | | | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | SET_CONV_SEC_TYPE | [pc] | V | [sc] | [sc] | [sc] | [sc] | [sc]| [sc] | [sc] | [sc] | [sc] | [sc] | [sc]| [sc] | [sc] | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [ok,pc,pn] | | - | | | | | | | | | | | | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | | | | | | | | | | | | | | | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | SET_CONV_SEC_USER_ID | [pc] | V | [sc] | [sc] | [sc] | [sc] | [sc]| [sc] | [sc] | [sc] | [sc] | [sc] | [sc]| [sc] | [sc] | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [ok,pc] | | - | | | | | | | | | | | | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | | | | | | | | | | | | | | | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | SET_CONV_TYPE | [pc] | V | [sc] | [sc] | [sc] | [sc] | [sc]| [sc] | [sc] | [sc] | [sc] | [sc] | [sc]| [sc] | [sc] | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [ok,pc] | | - | | | | | | | | | | | | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | | | | | | | | | | | | | | | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | SET_DEALLOCATE_TYPE | [pc] | V | V | V | V | V | V | V | V | V | V | V | V | V | [sc] | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [ok,pc] | | - | - | - | - | - | - | - | - | - | - | - | - | - | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | | | | | | | | | | | | | | | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | SET_ERROR_DIRECTION | [pc] | V | V | V | V | V | V | V | V | V | V | V | V | V | V | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [ok,pc] | | - | - | - | - | - | - | - | - | - | - | - | - | - | - | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | | | | | | | | | | | | | | | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | SET_FILL | [pc] | V | V | V | V | V | V | V | V | V | V | V | V | V | V | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [ok,pc] | | - | - | - | - | - | - | - | - | - | - | - | - | - | - | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | | | | | | | | | | | | | | | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | SET_INITIALIZATION_DA|A[pc] | V | [sc] | V | [sc] | [sc] | [sc]| [sc] | [sc] | [sc] | [sc] | [sc] | [sc]| [sc] | [sc] | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [ok,pc] | | - | | - | | | | | | | | | | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | | | | | | | | | | | | | | | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | SET_LOG_DATA | [pc] | V | V | V | V | V | V | V | V | V | V | V | V | V | V | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [ok,pc] | | - | - | - | - | - | - | - | - | - | - | - | - | - | - | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | | | | | | | | | | | | | | | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | SET_MODE_NAME | [pc] | V | [sc] | [sc] | [sc] | [sc] | [sc]| [sc] | [sc] | [sc] | [sc] | [sc] | [sc]| [sc] | [sc] | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [ok,pc] | | - | | | | | | | | | | | | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | | | | | | | | | | | | | | | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | SET_PARTNER_ID | [pc] | V | [sc] | [sc] | [sc] | [sc] | [sc]| [sc] | [sc] | [sc] | [sc] | [sc] | [sc]| [sc] | [sc] | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [ok,pc] | | - | | | | | | | | | | | | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | | | | | | | | | | | | | | | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | SET_PARTNER_LU_NAME | [pc] | V | [sc] | [sc] | [sc] | [sc] | [sc]| [sc] | [sc] | [sc] | [sc] | [sc] | [sc]| [sc] | [sc] | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [ok,pc] | | - | | | | | | | | | | | | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | | | | | | | | | | | | | | | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | SET_PREP_DATA_PERMITT|D[pc] | V | V | V | V | V | V | V | V | V | V | V | V | V | [sc] | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [ok,pc] | | - | - | - | - | - | - | - | - | - | - | - | - | - | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | | | | | | | | | | | | | | | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | SET_PREP_TO_RCV_TYPE | [pc] | V | V | V | V | V | V | V | V | V | V | V | V | V | [sc] | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [ok,pc] | | - | - | - | - | - | - | - | - | - | - | - | - | - | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | | | | | | | | | | | | | | | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | SET_PROCESSING_MODE | [pc] | V | V | V | V | V | V | V | V | V | V | V | V | V | V | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [ok,pc] | | - | - | - | - | - | - | - | - | - | - | - | - | - | - | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | | | | | | | | | | | | | | | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | SET_Q_CALLBACK_FUNC(N| [pc] | V | [sc] | [sc] | [sc] | [sc] | [sc]| [sc] | [sc] | [sc] | [sc] | [sc] | [sc]| [sc] | V | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [ok,pc] | | - | | | | | | | | | | | | | - | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | | | | | | | | | | | | | | | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | SET_Q_CALLBACK_FUNC(Q| [pc] | V | V | V | V | V | V | V | V | V | V | V | V | V | [sc] | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [ok,pc] | | - | - | - | - | - | - | - | - | - | - | - | - | - | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | | | | | | | | | | | | | | | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | SET_Q_PROC_MODE(N) | [pc] | V | [sc] | [sc] | [sc] | [sc] | [sc]| [sc] | [sc] | [sc] | [sc] | [sc] | [sc]| [sc] | V | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [ok,pc] | | - | | | | | | | | | | | | | - | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | | | | | | | | | | | | | | | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | SET_Q_PROC_MODE(Q) | [pc] | V | V | V | V | V | V | V | V | V | V | V | V | V | [sc] | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [ok,pc] | | - | - | - | - | - | - | - | - | - | - | - | - | - | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | | | | | | | | | | | | | | | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | SET_RECEIVE_TYPE | [pc] | V | V | V | V | V | V | V | V | V | V | V | V | V | V | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [ok,pc] | | - | - | - | - | - | - | - | - | - | - | - | - | - | - | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | | | | | | | | | | | | | | | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | SET_RETURN_CONTROL | [pc] | V | [sc] | [sc] | [sc] | [sc] | [sc]| [sc] | [sc] | [sc] | [sc] | [sc] | [sc]| [sc] | [sc] | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [ok,pc] | | - | | | | | | | | | | | | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | | | | | | | | | | | | | | | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | SET_SEND_RCV_MODE | [pc] | V | [sc] | [sc] | [sc] | [sc] | [sc]| [sc] | [sc] | [sc] | [sc] | [sc] | [sc]| [sc] | [sc] | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [ok,pc] | | - | | | | | | | | | | | | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | | | | | | | | | | | | | | | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | SET_SEND_TYPE | [pc] | V | V | V | V | V | V | V | V | V | V | V | V | V | [sc] | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [ok,pc] | | - | - | - | - | - | - | - | - | - | - | - | - | - | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | | | | | | | | | | | | | | | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | SET_SYNC_LEVEL | [pc] | V | [sc] | [sc] | [sc] | [sc] | [sc]| [sc] | [sc] | [sc] | [sc] | [sc] | [sc]| [sc] | [sc] | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [ok,pc,pn] | | - | | | | | | | | | | | | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | | | | | | | | | | | | | | | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | SET_TP_NAME | [pc] | V | [sc] | [sc] | [sc] | [sc] | [sc]| [sc] | [sc] | [sc] | [sc] | [sc] | [sc]| [sc] | [sc] | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [ok,pc] | | - | | | | | | | | | | | | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | | | | | | | | | | | | | | | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | SET_TRANSACTION_CONTR|L[pc] | V | [sc] | [sc] | [sc] | [sc] | [sc]| [sc] | [sc] | [sc] | [sc] | [sc] | [sc]| [sc] | [sc] | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [ok,pc] | | - | | | | | | | | | | | | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | | | | | | | | | | | | | | | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | TEST_REQ_TO_SEND_RCD | [pc] | [sc] | V' | V' | V' | [sc] | [sc]| [sc] | V' | V' | [sc] | [sc] | [sc]| [sc] | [sc] | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [ok,pc] | | | - | - | - | | | | - | - | | | | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | | | | | | | | | | | | | | | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | WAIT_FOR_COMPLETION | V | V | V | V | V | V | V | V | V | V | V | V | V | V | V | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [ok] | / | % | % | % | % | % | % | % | % | % | % | % | % | % | % | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [pc] | / | - | - | - | - | - | - | - | - | - | - | - | - | - | - | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | | | | | | | | | | | | | | | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | WAIT_FOR_CONVERSATION| V | V | V | V | V | V | V | V | V | V | V | V | V | V | V | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [ok] | / | % | % | % | % | % | % | % | % | % | % | % | % | % | % | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [sc,se] | / | - | - | - | - | - | - | - | - | - | - | - | - | - | - | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | | | | | | | | | | | | | | | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ ------------------------------------------------------------------------------------ Effects of Calls to the SAA Resource Recovery Interface on Half-Duplex Conversations Table 30 shows the state transitions resulting from calls to the SAA resource recovery interface on half-duplex conversations. This table applies only to conversations with sync_level set to CM_SYNC_POINT. The following abbreviations are used for return codes in Table 30: +-------------+------------------------------------------------------+ | ABBREVIATION| MEANING | +-------------+------------------------------------------------------+ | bo | RR_BACKED_OUT | +-------------+------------------------------------------------------+ | bom | RR_BACKED_OUT_OUTCOME_MIXED | +-------------+------------------------------------------------------+ | bop | RR_BACKED_OUT_OUTCOME_PENDING | +-------------+------------------------------------------------------+ | com | RR_COMMITTED_OUTCOME_MIXED | +-------------+------------------------------------------------------+ | cop | RR_COMMITTED_OUTCOME_PENDING | +-------------+------------------------------------------------------+ | ok | RR_OK | +-------------+------------------------------------------------------+ | sc | RR_PROGRAM_STATE_CHECK | +-------------+------------------------------------------------------+ +--------------------------------------------------------------------------------------------------------------------------------+ | Table 30. States and Transitions for Protected Half-Duplex Conversations (CPIRR) | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | | RESET| INI- | SEND | RE- | SEND-| CON- | CON-| CON- | DEFER| DEFER| SYNC-| SYNC-| SYNC| PRE- | INI- | | | | TIALI|E | CEIVE| PEND-| FIRM | FIRM| FIRM-| RE- | DEAL-| POINT| POINT| POIN| PARED| TIALIZE_| | | | | | | ING | | SEND| DEAL-| CEIVE| LOCAT| | SEND | DEAL| | IN- | | | | | | | | | | LOCAT| | | | | LOCA|E | COMING | | INPUTS | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 18 | 14 | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | COMMIT CALL | [sc](|0V(11)| V | [sc] | V | [sc] | [sc]| V(11)| V | V | V | V | V | V | V(11) | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [ok,com,cop] | | - | -(12)| | 3 | | | - | 4 | 1 | 4 | 3 | 1 | 3(13)| - | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [bo,bom,bop] | | - | # | | # | | | - | # | # | # | # | # | # | - | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [sc] | | - | - | | - | | | - | - | - | - | - | - | - | - | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | | | | | | | | | | | | | | | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | BACKOUT CALL | V(14)| V(11)| V | V | V | V | V | V(11)| V | V | V | V | V | V | V(11) | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [ok,bop,bom] | - | - | # | # | # | # | # | - | # | # | # | # | # | # | - | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | | | | | | | | | | | | | | | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ ------------------------------------------------------------------------ Effects of Calls on Half-Duplex Conversations to the X/Open TX Interface Table 31 shows the state transitions resulting from calls to the X/Open TX interface on half-duplex conversations. This table applies only to conversations with sync_level set to CM_SYNC_POINT or CM_SYNC_POINT_NO_CONFIRM. The following abbreviations are used for return codes in Table 31: +-------------+------------------------------------------------------+ | ABBREVIATION| MEANING | +-------------+------------------------------------------------------+ | bo | TX_ROLLBACK or TX_ROLLBACK_NO_BEGIN | +-------------+------------------------------------------------------+ | bom | TX_ROLLBACK_MIXED or TX_ROLLBACK_MIXED_NO_BEGIN | +-------------+------------------------------------------------------+ | bop | TX_ROLLBACK_HAZARD or TX_ROLLBACK_HAZARD_NO_BEGIN | +-------------+------------------------------------------------------+ | com | TX_MIXED or TX_MIXED_NO_BEGIN | +-------------+------------------------------------------------------+ | cop | TX_HAZARD or TX_HAZARD_NO_BEGIN | +-------------+------------------------------------------------------+ | fa | TX_FAIL | +-------------+------------------------------------------------------+ | ok | TX_OK or TX_NO_BEGIN | +-------------+------------------------------------------------------+ | sc | TX_PROTOCOL_ERROR | +-------------+------------------------------------------------------+ +--------------------------------------------------------------------------------------------------------------------------------+ | Table 31. States and Transitions for Protected Half-Duplex Conversations (X/Open TX) | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | | RESET| INI- | SEND | RE- | SEND-| CON- | CON-| CON- | DEFER| DEFER| SYNC-| SYNC-| SYNC| PRE- | INI- | | | | TIALI|E | CEIVE| PEND-| FIRM | FIRM| FIRM-| RE- | DEAL-| POINT| POINT| POIN| PARED| TIALIZE_| | | | | | | ING | | SEND| DEAL-| CEIVE| LOCAT| | SEND | DEAL| | IN- | | | | | | | | | | LOCAT| | | | | LOCA|E | COMING | | INPUTS | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 18 | 14 | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | TX_COMMIT | [sc](|5V(16)| V | [sc] | V | [sc] | [sc]| V(16)| V | V | V | V | V | V | V(16) | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [ok,com,cop] | | - | -(17)| | 3 | | | - | 4 | 1 | 4 | 3 | 1 | 3(18)| - | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [bo,bom,bop] | | - | # | | # | | | - | # | # | # | # | # | # | - | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [sc] | | - | - | | - | | | - | - | - | - | - | - | - | - | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [fa] | | - | ? | | ? | | | - | ? | ? | ? | ? | ? | ? | - | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | | | | | | | | | | | | | | | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | TX_ROLLBACK | V(19)| V(16)| V | V | V | V | V | V(16)| V | V | V | V | V | V | V(16) | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [ok,bop,bom] | - | - | # | # | # | # | # | - | # | # | # | # | # | # | - | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | [fa] | | - | ? | ? | ? | ? | ? | - | ? | ? | ? | ? | ? | ? | - | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | | | | | | | | | | | | | | | | | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | TX_BEGIN | - | - | - | - | - | - | - | - | - | - | / | / | / | / | - | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | TX_CLOSE | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | TX_INFO | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | TX_OPEN | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | TX_SET_COMMIT_RETURN | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | TX_SET_TRANS_CONTROL | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ | TX_SET_TRANS_TIMEOUT | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | +----------------------+------+------+------+------+------+------+-----+------+------+------+------+------+-----+------+---------+ ---------------------------------------------------- Explanation of Full-Duplex State Table Abbreviations Abbreviations are used in the state table to indicate the different permutations of calls and characteristics. There are four categories of abbreviations: o CONVERSATION CHARACTERISTIC abbreviations are enclosed o CONVERSATION QUEUE abbreviations are enclosed o RETURN_CODE abbreviations are enclosed by brackets -- [ . . . ] o DATA_RECEIVED AND STATUS_RECEIVED abbreviations are enclosed by braces and separated by a comma-- ¤ . . . , . . . ‡. The abbreviation before the comma represents the data_received value, and the abbreviation after the comma represents the value of status_received. The next sections show the abbreviations used in each category. Conversation Characteristics ( ) The following abbreviations are used for conversation characteristics: +-------------+------------------------------------------------------+ | ABBREVIATION| MEANING | +-------------+------------------------------------------------------+ | A | deallocate_type is set to CM_DEALLOCATE_ABEND | +-------------+------------------------------------------------------+ | B | send_type is set to CM_BUFFER_DATA | +-------------+------------------------------------------------------+ | C | deallocate_type is set to CM_DEALLOCATE_CONFIRM | +-------------+------------------------------------------------------+ | D(x) | send_type is set to CM_SEND_AND_DEALLOCATE. x | | | represents the deallocate_type and can be A, C, F, | | | or S. Refer to the appropriate entries in this | | | table for a description of these values. | +-------------+------------------------------------------------------+ | F | For a Deallocate call, F means one of the following: | | | | | | o deallocate_type is set to CM_DEALLOCATE_FLUSH | | | o deallocate_type is set to | | | CM_DEALLOCATE_SYNC_LEVEL and either sync_level | | | is set to CM_NONE or the conversation is in | | | INITIALIZE_INCOMING state | | | o deallocate_type is set to | | | CM_DEALLOCATE_SYNC_LEVEL and sync_level is set | | | to CM_SYNC_POINT_NO_CONFIRM, but the | | | conversation is not currently included in a | | | transaction | | | | | | For a Send_Data call, F means the following: | | | | | | o send_type is set to CM_SEND_AND_FLUSH | | | | +-------------+------------------------------------------------------+ | I | receive_type is set to CM_RECEIVE_IMMEDIATE | +-------------+------------------------------------------------------+ | S | For a Deallocate call, S means the following: | | | | | | o deallocate_type is set to | | | CM_DEALLOCATE_SYNC_LEVEL, sync_level is set to | | | CM_SYNC_POINT_NO_CONFIRM and the conversation is | | | currently included in a transaction | | | | +-------------+------------------------------------------------------+ | W | receive_type is set to CM_RECEIVE_AND_WAIT. | +-------------+------------------------------------------------------+ Conversation Queues () The following abbreviations are used for conversation queues: +-------------+------------------------------------------------------+ | ABBREVIATION| MEANING | +-------------+------------------------------------------------------+ | N | conversation_queue is set to CM_INITIALIZATION_QUEUE | +-------------+------------------------------------------------------+ | Q | conversation_queue is set to one of the following: | | | | | | o CM_SEND_QUEUE | | | o CM_RECEIVE_QUEUE | | | o CM_EXPEDITED_SEND_QUEUE | | | o CM_EXPEDITED_RECEIVE_QUEUE | | | | +-------------+------------------------------------------------------+ Return Code Values [ ] The following table shows abbreviations that are used for return codes. The state table for CPI Communications calls on full-duplex conversations follows. date='13 April 1992' run=yes. +-------------+------------------------------------------------------+ | ABBREVIATION| MEANING | +-------------+------------------------------------------------------+ | ae | For an Allocate call, ae means one of the following: | | | | | | o CM_ALLOCATE_FAILURE_NO_RETRY | | | o CM_ALLOCATE_FAILURE_RETRY | | | o CM_SECURITY_NOT_VALID | | | o CM_SECURITY_NOT_SUPPORTED | | | o CM_SECURITY_MUTUAL_FAILED | | | o CM_SEND_RCV_MODE_NOT_SUPPORTED | | | o CM_CONVERSATION_TYPE_MISMATCH | | | o CM_PIP_NOT_SPECIFIED_CORRECTLY | | | o CM_RETRY_LIMIT_EXCEEDED | | | o CM_SYNC_LVL_NOT_SUPPORTED_PGM | | | o CM_SYNC_LVL_NOT_SUPPORTED_SYS | | | o CM_SEND_RCV_MODE_NOT_SUPPORTED | | | o CM_TPN_NOT_RECOGNIZED | | | o CM_TP_NOT_AVAILABLE_NO_RETRY | | | o CM_TP_NOT_AVAILABLE_RETRY | | | o CM_RESOURCE_FAILURE_NO_RETRY | | | o CM_RESOURCE_FAILURE_RETRY | | | | | | For any other call, ae means one of the following: | | | | | | o CM_ALLOCATION_ERROR | | | o CM_CONVERSATION_TYPE_MISMATCH | | | o CM_SEND_RCV_MODE_NOT_SUPPORTED | | | o CM_PIP_NOT_SPECIFIED_CORRECTLY | | | o CM_SECURITY_NOT_VALID | | | o CM_SYNC_LVL_NOT_SUPPORTED_SYS | | | o CM_SYNC_LVL_NOT_SUPPORTED_PGM | | | o CM_TPN_NOT_RECOGNIZED | | | o CM_TP_NOT_AVAILABLE_NO_RETRY | | | o CM_TP_NOT_AVAILABLE_RETRY | | | | +-------------+------------------------------------------------------+ | bo | CM_TAKE_BACKOUT. This return code is returned only | | | for conversations with sync_level set to | | | CM_SYNC_POINT_NO_CONFIRM. | +-------------+------------------------------------------------------+ | da | da means one of the following: | | | | | | o CM_DEALLOCATED_ABEND | | | o CM_DEALLOCATED_ABEND_SVC | | | o CM_DEALLOCATED_ABEND_TIMER | | | | +-------------+------------------------------------------------------+ | db | db is returned only for conversations with | | | sync_level set to CM_SYNC_POINT_NO_CONFIRM and means | | | one of the following: | | | | | | o CM_DEALLOCATED_ABEND_BO | | | o CM_DEALLOCATED_ABEND_SVC_BO | | | o CM_DEALLOCATED_ABEND_TIMER_BO | | | | +-------------+------------------------------------------------------+ | dn | CM_DEALLOCATED_NORMAL | +-------------+------------------------------------------------------+ | dr | CM_DEALLOCATE_CONFIRM_REJECT | +-------------+------------------------------------------------------+ | ds | CM_CONV_DEALLOCATED_AFTER_SYNCPT. This return code | | | is returned only for conversations with sync_level | | | set to CM_SYNC_POINT_NO_CONFIRM. | +-------------+------------------------------------------------------+ | ed | This return code is reported for expedited-data | | | calls only. ed means one of the following: | | | | | | o CM_EXP_DATA_NOT_SUPPORTED | | | o CM_BUFFER_TOO_SMALL | | | o CM_CONVERSATION_ENDING | | | | +-------------+------------------------------------------------------+ | en | en means one of the following: | | | | | | o CM_PROGRAM_ERROR_NO_TRUNC | | | o CM_SVC_ERROR_NO_TRUNC | | | | +-------------+------------------------------------------------------+ | ep | ep means one of the following: | | | | | | o CM_PROGRAM_ERROR_PURGING | | | o CM_SVC_ERROR_PURGING | | | | +-------------+------------------------------------------------------+ | et | et means one of the following: | | | | | | o CM_PROGRAM_ERROR_TRUNC | | | o CM_SVC_ERROR_TRUNC | | | | +-------------+------------------------------------------------------+ | ns | CM_NO_SECONDARY_INFORMATION | +-------------+------------------------------------------------------+ | oi | CM_OPERATION_INCOMPLETE | +-------------+------------------------------------------------------+ | ok | CM_OK | +-------------+------------------------------------------------------+ | pb | CM_INCLUDE_PARTNER_REJECT_BO | +-------------+------------------------------------------------------+ | pc | CM_PROGRAM_PARAMETER_CHECK. This return code means | | | an error was found in one or more parameters. For | | | calls illegally issued in RESET state, pc is | | | returned because the conversation_ID is undefined in | | | that state. | +-------------+------------------------------------------------------+ | pe | CM_PARAMETER_ERROR | +-------------+------------------------------------------------------+ | pn | CM_PARM_VALUE_NOT_SUPPORTED | +-------------+------------------------------------------------------+ | rb | rb means one of the following: | | | | | | o CM_RESOURCE_FAIL_NO_RETRY_BO | | | o CM_RESOURCE_FAILURE_RETRY_BO | | | | +-------------+------------------------------------------------------+ | rf | rf means one of the following: | | | | | | o CM_RESOURCE_FAILURE_NO_RETRY | | | o CM_RESOURCE_FAILURE_RETRY | | | | +-------------+------------------------------------------------------+ | sc | CM_PROGRAM_STATE_CHECK | +-------------+------------------------------------------------------+ | un | CM_UNSUCCESSFUL | +-------------+------------------------------------------------------+ NOTES: 1. The return code CM_PRODUCT_SPECIFIC_ERROR is not included in the state table because the state transitions caused by this return code are product-specific. 2. The CM_OPERATION_NOT_ACCEPTED return code is not included in the state table. A program receives CM_OPERATION_NOT_ACCEPTED when it issues a call associated with a queue that has a a previous operation still in progress, regardless of the state. No conversation state transition occurs. 3. The CM_CALL_NOT_SUPPORTED return code is not included in the state table. It is returned when the local system provides an entry point for the call but does not support the function requested by the call, regardless of the state. No state transition occurs. data_received and status_received ¤ , ‡ data_received and status_received ( , ) The following abbreviations are used for the data_received values: +-------------+------------------------------------------------------+ | ABBREVIATION| MEANING | +-------------+------------------------------------------------------+ | dr | Means one of the following: | | | | | | o CM_DATA_RECEIVED | | | o CM_COMPLETE_DATA_RECEIVED | | | o CM_INCOMPLETE_DATA_RECEIVED | | | | +-------------+------------------------------------------------------+ | * | Means one of the following: | | | | | | o CM_DATA_RECEIVED | | | o CM_COMPLETE_DATA_RECEIVED | | | o CM_NO_DATA_RECEIVED | | | | +-------------+------------------------------------------------------+ The following abbreviations are used for the status_received values: +-------------+------------------------------------------------------+ | ABBREVIATION| MEANING | +-------------+------------------------------------------------------+ | cd | CM_CONFIRM_DEALLOCATE_RECEIVED | +-------------+------------------------------------------------------+ | jt | CM_JOIN_TRANSACTION | +-------------+------------------------------------------------------+ | no | CM_NO_STATUS_RECEIVED | +-------------+------------------------------------------------------+ | po | CM_PREPARE_OK | +-------------+------------------------------------------------------+ | tc | CM_TAKE_COMMIT or CM_TAKE_COMMIT_DATA_OK. These | | | values are returned only for conversations with | | | sync_level set to CM_SYNC_POINT_NO_CONFIRM. | +-------------+------------------------------------------------------+ | td | CM_TAKE_COMMIT_DEALLOCATE or | | | CM_TAKE_COMMIT_DEALLOC_DATA_OK. These values are | | | returned only for conversations with sync_level set | | | to CM_SYNC_POINT_NO_CONFIRM. | +-------------+------------------------------------------------------+ Table Symbols for the Full-Duplex State Table The following symbols are used in the state table to indicate the condition that results when a call is issued from a certain state: +-------------+------------------------------------------------------+ | SYMBOL | MEANING | +-------------+------------------------------------------------------+ | / | Cannot occur. CPI Communications either will not | | | allow this input or will never return the indicated | | | return codes for this input in this state. | +-------------+------------------------------------------------------+ | - | Remain in current state | +-------------+------------------------------------------------------+ | 1-18 | Number of next state | +-------------+------------------------------------------------------+ | V | It is valid to make this call from this state. See | | | the table entries immediately below this symbol to | | | determine the state transition resulting from the | | | call. | +-------------+------------------------------------------------------+ | % | Wait_for_Completion (CMWCMP) can only be issued when | | | one or more of the calls issued by the program has | | | received a return code of CM_OPERATION_INCOMPLETE. | | | When Wait_for_Completion completes with a return | | | code of CM_OK, it returns a list of | | | outstanding-operation-IDs that identify the | | | operations that have completed. Each of the | | | conversations on which a call has completed then | | | makes a transition to the appropriate state as | | | indicated for the operations that are now complete. | +-------------+------------------------------------------------------+ | V' | For a conversation with sync_level set to CM_NONE or | | | not currently included in a transaction, this is | | | equivalent to V. If the conversation has sync_level | | | set to CM_SYNC_POINT_NO_CONFIRM and the conversation | | | is currently included in a transaction, however, V' | | | means it is valid to make this call from this state | | | unless the conversation's context is in the | | | BACKOUT-REQUIRED condition. In that case, the call | | | is invalid and CM_PROGRAM_STATE_CHECK is returned. | | | For valid calls, see the table entries immediately | | | below this symbol to determine the state transition | | | resulting from the call. | +-------------+------------------------------------------------------+ | + | For a conversation with sync_level set to CM_NONE or | | | not currently included in a transaction, this symbol | | | should be ignored. For a conversation using | | | sync_level set to CM_SYNC_POINT_NO_CONFIRM and | | | currently included in a transaction, when this | | | symbol follows a state number or a - (for example, | | | 1+ or -+), it means the conversation's context may | | | be in the BACKOUT-REQUIRED condition following the | | | call. | +-------------+------------------------------------------------------+ | # | Conversations with sync_level set to | | | CM_SYNC_POINT_NO_CONFIRM go to the state they were | | | in at the completion of the most recent | | | synchronization point. If there was no prior | | | synchronization event, both sides of the | | | conversation go to SEND-RECEIVE state. | +-------------+------------------------------------------------------+ NOTE: The following calls can only be issued on half-duplex conversations. When issued on full-duplex conversations, CM_PROGRAM_PARAMETER_CHECK is returned for all conversation states except Reset. These calls are, therefore, not shown in the state tables. o Confirm o Prepare_To_Receive o Request_To_Send o Set_Confirmation_Urgency o Set_Error_Direction o Set_Prepare_To_Receive_Type o Set_Processing_Mode o Test_Request_To_Send_Received +--------------------------------------------------------------------------------------------------------------------------------+ | Table 32. States and Transitions for CPI Communications Calls on Full-Duplex Conversations | +--------------+-----------------------------------------------------------------------------------------------------------------+ | | USED BY CPI-C FDX CONVERSATIONS | | +---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | | RESET | INI- | CONFIRM- | DEFER- | SYNC- | SYNC-PT-| INI- | SEND- | RECEIVE- | SEND- | PREPARED| | | | TIALIZE | DEALLOC(2|)DEALLOC | POINT | DEALLOC | TIALIZE- | ONLY | ONLY | RECEIVE | | | INPUTS | | | | | | | INCOMING | | | | | | | 1 | 2 | 8 | 10 | 11 | 13 | 14 | 15 | 16 | 17 | 18 | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | ACCEPT_CONVER|ATIOV | / | / | / | / | / | / | / | / | / | / | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | [ok] | 17 | | | | | | | | | | | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | [sc] | - | | | | | | | | | | | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | | | | | | | | | | | | | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | ACCEPT_INCOMI|G [pc] | [sc] | [sc] | [sc] | [sc] | [sc] | V | [sc] | [sc] | [sc] | [sc] | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | [ok] | | | | | | | 17 | | | | | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | [oi,pc,sc] | | | | | | | - | | | | | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | | | | | | | | | | | | | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | ALLOCATE | [pc] | V' | [sc] | [sc] | [sc] | [sc] | [sc] | [sc] | [sc] | [sc] | [sc] | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | [ok] | | 17 | | | | | | | | | | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | [ae] | | 1 | | | | | | | | | | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | [oi,pc,pe,un]| | - | | | | | | | | | | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | | | | | | | | | | | | | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | CANCEL_CONVER|ATI[pc] | V | V | V | V | V | V | V | V | V | V | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | [ok] | | 1&caret.| 1&caret. | 1&caret.| 1&caret. | 1&caret.| 1&caret. | 1&caret.| 1&caret. | 1&caret.| 1&caret.| +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | [pc] | | - | - | - | - | - | - | - | - | - | - | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | | | | | | | | | | | | | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | CONFIRMED(21)| [pc] | [sc] | V | [sc] | [sc] | [sc] | [sc] | [sc] | [sc] | [sc] | [sc] | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | [ok] | | | 1 | | | | | | | | | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | [oi,pc] | | | - | | | | | | | | | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | | | | | | | | | | | | | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | DEALLOCATE(A)| [pc] | V | V | V | V | V | / | V | V | V | V | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | [ok] | | 1&caret.| 1&caret. | 1&caret.| 1&caret. | 1&caret.| | 1&caret.| 1&caret. | 1&caret.| 1&caret.| +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | [oi,pc] | | - | - | - | - | - | | - | - | - | - | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | | | | | | | | | | | | | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | DEALLOCATE(C)|21)[pc] | [sc] | [sc] | [sc] | [sc] | [sc] | / | [sc] | [sc] | V | [sc] | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | [ok,ae,da,dn,|f] | | | | | | | | | 16 | | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | [dr,oi,pc,sc]| | | | | | | | | | - | | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | | | | | | | | | | | | | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | DEALLOCATE(F)| [pc] | [sc] | [sc] | [sc] | [sc] | [sc] | V | V | [sc] | V | [sc] | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | [ok] | | | | | | | 1 | 1 | | 16 | | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | [ae] | | | | | | | / | / | | 16 | | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | [da,dn,rf] | | | | | | | / | 1 | | 16 | | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | [oi,pc] | | | | | | | - | - | | - | | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | [sc] | | | | | | | / | / | | - | | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | | | | | | | | | | | | | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | DEALLOCATE(S)| [pc] | [sc] | [sc] | [sc] | [sc] | [sc] | / | / | / | V' | [sc] | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | [ok] | | | | | | | | | | 10 | | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | [ae,oi,pc,sc]| | | | | | | | | | - | | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | [bo] | | | | | | | | | | -&caret.| | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | [db,pb,rb] | | | | | | | | | | 1&caret.| | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | [ds] | | | | | | | | | | 1 | | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | | | | | | | | | | | | | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | DEFERRED_DEAL|OCA[pc]2)| [sc] | [sc] | [sc] | [sc] | [sc] | [sc] | [sc] | [sc] | V' | [sc] | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | [ok] | | | | | | | | | | -(23) | | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | [ae] | | | | | | | | | | - | | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | [bo] | | | | | | | | | | -&caret.| | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | [db,pb,rb] | | | | | | | | | | 1&caret.| | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | [oi,pc] | | | | | | | | | | - | | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | | | | | | | | | | | | | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | EXTRACT_AE_QU|LIF[pc] | V | V | V | V | V | [sc] | V | V | V | V | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | [ok,pc] | | - | - | - | - | - | | - | - | - | - | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | | | | | | | | | | | | | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | EXTRACT_AP_TI|LE [pc] | V | V | V | V | V | [sc] | V | V | V | V | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | [ok,pc] | | - | - | - | - | - | | - | - | - | - | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | | | | | | | | | | | | | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | EXTRACT_APPL_|TX_[pc] | V | V | V | V | V | [sc] | V | V | V | V | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | [ok,pc] | | - | - | - | - | - | | - | - | - | - | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | | | | | | | | | | | | | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | EXTRACT_CONV_|ONT[pc] | [sc] | V | V | V | V | [sc] | V | V | V | V | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | [ok,pc] | | | - | - | - | - | | - | - | - | - | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | | | | | | | | | | | | | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | EXTRACT_CONV_|TAT[pc] | V | V | V | V | V | V | V | V | V | V | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | [ok,pc] | | - | - | - | - | - | - | - | - | - | - | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | [bo] | | / | / | - | - | - | / | / | / | - | - | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | | | | | | | | | | | | | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | EXTRACT_CONV_|YPE[pc] | V | V | V | V | V | [sc] | V | V | V | V | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | [ok,pc] | | - | - | - | - | - | | - | - | - | - | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | | | | | | | | | | | | | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | EXTRACT_INIT_|ATA[pc] | [sc] | V | V | V | V | [sc] | V | V | V | V | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | [ok,pc] | | | - | - | - | - | | - | - | - | - | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | | | | | | | | | | | | | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | EXTRACT_MODE_|AME[pc] | V | V | V | V | V | [sc] | V | V | V | V | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | [ok,pc] | | - | - | - | - | - | | - | - | - | - | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | | | | | | | | | | | | | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | EXTRACT_PART_|U_N[pc] | V | V | V | V | V | [sc] | V | V | V | V | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | [ok,pc] | | - | - | - | - | - | | - | - | - | - | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | | | | | | | | | | | | | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | EXTRACT_PARTN|R_IDV | V | V | V | V | V | [sc] | V | V | V | V | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | [ok,pc] | - | - | - | - | - | - | | - | - | - | - | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | | | | | | | | | | | | | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | EXTRACT_SEC_U|ER_[sc] | V | V | V | V | V | [sc] | V | V | V | V | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | [ok,pc] | | - | - | - | - | - | | - | - | - | - | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | | | | | | | | | | | | | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | EXTRACT_SECON|ARY_VNFO | V | V | V | V | V | V | V | V | V | V | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | [ok,ns,pc] | - | - | - | - | - | - | - | - | - | - | - | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | | | | | | | | | | | | | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | EXTRACT_SEND_|ECE[pc]MO|E V | V | V | V | V | [sc] | V | V | V | V | _ +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | [ok,pc] | | - | - | - | - | - | | - | - | - | - | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | | | | | | | | | | | | | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | EXTRACT_SYNC_|EVE[pc] | V | V | V | V | V | [sc] | V | V | V | V | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | [ok,pc] | | - | - | - | - | - | | - | - | - | - | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | | | | | | | | | | | | | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | EXTRACT_TRANS|CTI[pc]ON|ROL V | V | V | V | V | [sc] | V | V | V | V | _ +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | [ok,pc] | | - | - | - | - | - | | - | - | - | - | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | | | | | | | | | | | | | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | EXTRACT_TP_NA|E [pc] | V | V | V | V | V | [sc] | V | V | V | V | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | [ok,pc] | | - | - | - | - | - | | - | - | - | - | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | | | | | | | | | | | | | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | FLUSH | [pc] | [sc] | [sc] | [sc] | [sc] | [sc] | [sc] | V | [sc] | V' | [sc] | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | [ok] | | | | | | | | - | | - | | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | [ae] | | | | | | | | / | | 16 | | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | [bo] | | | | | | | | / | | -&caret.| | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | [da,dn,rf] | | | | | | | | 1 | | 16 | | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | [db,rb] | | | | | | | | / | | 1&caret.| | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | [ds] | | | | | | | | / | | 1 | | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | [oi,pc] | | | | | | | | - | | - | | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | [pb] | | | | | | | | / | | 1&caret.| | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | [sc] | | | | | | | | / | | - | | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | | | | | | | | | | | | | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | INCLUDE_PTR_I|_TR[pc]22| [sc] | [sc] | [sc] | [sc] | [sc] | [sc] | [sc] | [sc] | V' | [sc] | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | [ok] | | | | | | | | | | - | | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | [ae] | | | | | | | | | | - | | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | [da,dn,rf] | | | | | | | | | | 16 | | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | [oi,pc] | | | | | | | | | | - | | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | | | | | | | | | | | | | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | INITIALIZE_CO|VERSVTION|24) / | / | / | / | / | / | / | / | / | / | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | [ok] | 2 | | | | | | | | | | | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | [pc] | - | | | | | | | | | | | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | | | | | | | | | | | | | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | INITIALIZE_FO|_INCVMING| / | / | / | / | / | / | / | / | / | / | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | [ok] | 17 | | | | | | | | | | | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | [pc] | - | | | | | | | | | | | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | | | | | | | | | | | | | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | PREPARE | [pc] | [sc] | [sc] | V' | [sc] | [sc] | [sc] | [sc] | [sc] | V' | [sc] | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | [ok] | | | | 18 | | | | | | 18 | | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | [ae] | | | | - | | | | | | - | | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | [bo] | | | | -&caret.| | | | | | -&caret.| | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | [db,pb,rb] | | | | 1&caret.| | | | | | 1&caret.| | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | [ds] | | | | 1 | | | | | | 1 | | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | [oi,pc] | | | | - | | | | | | - | | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | | | | | | | | | | | | | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | RECEIVE(I) | [pc] | [sc] | [sc] | [sc] | [sc] | [sc] | [sc] | [sc] | V | V' | V' | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | [ok] ¤dr,no‡ | | | | | | | | | - | - | - | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | [ok] ¤*,cd‡ | | | | | | | | | / | 8 | / | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | [ok] ¤*,jt‡ | | | | | | | | | / | - | / | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | [ok] ¤*,po‡ | | | | | | | | | / | / | - | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | [ok] ¤*,tc‡ | | | | | | | | | / | 11 | / | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | [ok] ¤*,td‡ | | | | | | | | | / | 13 | / | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | [ae] | | | | | | | | | 1 | 1 | 1 | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | [bo] | | | | | | | | | / | -&caret.| -&caret.| +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | [da,rf] | | | | | | | | | 1 | 1 | / | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | [db,pb,rb] | | | | | | | | | / | 1&caret.| 1&caret.| +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | [dn] | | | | | | | | | 1 | 15 | / | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | [ds] | | | | | | | | | / | 1 | / | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | [en,et] | | | | | | | | | - | - | 17 | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | [ep] | | | | | | | | | - | - | / | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | [pc,un] | | | | | | | | | - | - | - | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | [sc] | | | | | | | | | / | - | - | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | | | | | | | | | | | | | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | RECEIVE(W) | [pc] | [sc] | [sc] | [sc] | [sc] | [sc] | [sc] | [sc] | V | V' | V' | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | [ok] ¤dr,no‡ | | | | | | | | | - | - | - | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | [ok] ¤*,cd‡ | | | | | | | | | / | 8 | / | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | [ok] ¤*,jt‡ | | | | | | | | | / | - | / | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | [ok] ¤*,po‡ | | | | | | | | | / | / | - | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | [ok] ¤*,tc‡ | | | | | | | | | / | 11 | / | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | [ok] ¤*,td‡ | | | | | | | | | / | 13 | / | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | [ae] | | | | | | | | | 1 | 1 | 1 | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | [bo] | | | | | | | | | / | -&caret.| -&caret.| +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | [da,rf] | | | | | | | | | 1 | 1 | / | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | [db,pb,rb] | | | | | | | | | / | 1&caret.| 1&caret.| +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | [dn] | | | | | | | | | 1 | 15 | / | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | [ds] | | | | | | | | | / | 1 | / | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | [en,et] | | | | | | | | | - | - | 17 | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | [ep] | | | | | | | | | - | - | / | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | [oi,pc] | | | | | | | | | - | - | - | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | [sc] | | | | | | | | | / | - | - | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | | | | | | | | | | | | | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | RECEIVE_EXP_D|TA [pc] | [sc] | V | V | V | V | [sc] | V | V | V | V | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | [ok,ed,oi,pc,|n] | | - | - | - | - | | - | - | - | - | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | | | | | | | | | | | | | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | SEND_DATA | [pc] | [sc] | [sc] | [sc] | V' | V' | [sc] | V | [sc] | V' | [sc] | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | (B) [ok] | | | | | - | - | | - | | - | | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | (D(A)) [ok] | | | | | 1&caret. | 1&caret.| | 1 | | 1&caret.| | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | (D(C)) [ok] | | | | | / | / | | / | | 16 | | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | (D(F)) [ok] | | | | | / | / | | 1 | | 16 | | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | (D(S)) [ok] | | | | | / | / | | / | | 10 | | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | (F) [ok] | | | | | - | - | | - | | - | | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | [ae] | | | | | / | / | | / | | 16 | | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | [bo] | | | | | -&caret. | -&caret.| | / | | -&caret.| | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | [da,dn,rf] | | | | | / | / | | 1 | | 16 | | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | [db,rb] | | | | | 1&caret. | 1&caret.| | / | | 1&caret.| | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | [dr,oi,pc] | | | | | - | - | | - | | - | | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | [ds] | | | | | / | / | | / | | 1 | | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | [pb] | | | | | / | / | | / | | 1&caret.| | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | [sc] | | | | | - | - | | / | | - | | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | | | | | | | | | | | | | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | SEND_ERROR | [pc] | [sc] | V | [sc] | [sc] | [sc] | [sc] | V | [sc] | V' | [sc] | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | [ok] | | | 17 | | | | | - | | - | | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | [ae] | | | / | | | | | / | | 16 | | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | [bo] | | | / | | | | | / | | -&caret.| | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | [da,dn,rf] | | | 1 | | | | | 1 | | 16 | | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | [db,rb] | | | / | | | | | / | | 1&caret.| | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | [ds] | | | / | | | | | / | | 1 | | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | [oi,pc] | | | - | | | | | - | | - | | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | [pb] | | | / | | | | | / | | 1&caret.| | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | [sc] | | | / | | | | | / | | - | | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | | | | | | | | | | | | | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | SEND_EXPEDITE|_DA[pc] | [sc] | V | V | V | V | [sc] | V | V | V | V | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | [ok,ed,oi,pc]| | | - | - | - | - | | - | - | - | - | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | | | | | | | | | | | | | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | SET_AE_QUALIF|ER [pc] | V | [sc] | [sc] | [sc] | [sc] | [sc] | [sc] | [sc] | [sc] | [sc] | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | [ok,pc] | | - | | | | | | | | | | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | | | | | | | | | | | | | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | SET_ALLOCATE_|ONF[pc] | V | [sc] | [sc] | [sc] | [sc] | [sc] | [sc] | [sc] | [sc] | [sc] | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | [ok,pc] | | - | | | | | | | | | | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | | | | | | | | | | | | | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | SET_AP_TITLE | [pc] | V | [sc] | [sc] | [sc] | [sc] | [sc] | [sc] | [sc] | [sc] | [sc] | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | [ok,pc] | | - | | | | | | | | | | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | | | | | | | | | | | | | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | SET_APPL_CONT|XT_[pc] | V | [sc] | [sc] | [sc] | [sc] | [sc] | [sc] | [sc] | [sc] | [sc] | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | [ok,pc] | | - | | | | | | | | | | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | | | | | | | | | | | | | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | SET_BEGIN_TRA|SAC[pc] | V | V | V | V | V | [sc] | V | V | V | V | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | [ok,pc] | | - | - | - | - | - | | - | - | - | - | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | | | | | | | | | | | | | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | SET_CONV_SEC_|W [pc] | V | [sc] | [sc] | [sc] | [sc] | [sc] | [sc] | [sc] | [sc] | [sc] | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | [ok,pc] | | - | | | | | | | | | | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | | | | | | | | | | | | | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | SET_CONV_SEC_|YPE[pc] | V | [sc] | [sc] | [sc] | [sc] | [sc] | [sc] | [sc] | [sc] | [sc] | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | [ok,pc,pn] | | - | | | | | | | | | | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | | | | | | | | | | | | | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | SET_CONV_SEC_|SER[pc] | V | [sc] | [sc] | [sc] | [sc] | [sc] | [sc] | [sc] | [sc] | [sc] | _ +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | [ok,pc] | | - | | | | | | | | | | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | | | | | | | | | | | | | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | SET_CONVERSAT|ON_[pc] | V | [sc] | [sc] | [sc] | [sc] | V | [sc] | [sc] | [sc] | [sc] | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | [ok,pc] | | - | | | | | - | | | | | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | | | | | | | | | | | | | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | SET_DEALLOCAT|_TY[pc] | V | V | V | V | V | [sc] | V | V | V | V | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | [ok,pc] | | - | - | - | - | - | | - | - | - | - | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | | | | | | | | | | | | | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | SET_FILL | [pc] | V | V | V | V | V | V | V | V | V | V | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | [ok,pc] | | - | - | - | - | - | - | - | - | - | - | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | | | | | | | | | | | | | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | SET_INITIALIZ|TIO[pc]TA| V | [sc] | [sc] | [sc] | [sc] | [sc] | [sc] | [sc] | V | [sc] | _ +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | [ok,pc] | | - | | | | | | | | - | | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | | | | | | | | | | | | | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | SET_LOG_DATA | [pc] | V | V | V | V | V | V | V | V | V | V | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | [ok,pc] | | - | - | - | - | - | - | - | - | - | - | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | | | | | | | | | | | | | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | SET_MODE_NAME| [pc] | V | [sc] | [sc] | [sc] | [sc] | [sc] | [sc] | [sc] | [sc] | [sc] | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | [ok,pc] | | - | | | | | | | | | | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | | | | | | | | | | | | | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | SET_PARTNER_L|_NA[pc] | V | [sc] | [sc] | [sc] | [sc] | [sc] | [sc] | [sc] | [sc] | [sc] | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | [ok,pc] | | - | | | | | | | | | | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | | | | | | | | | | | | | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | SET_PARTNER_I| [pc] | V | [sc] | [sc] | [sc] | [sc] | [sc] | [sc] | [sc] | [sc] | [sc] | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | [ok,pc] | | - | | | | | | | | | | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | | | | | | | | | | | | | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | SET_PREP_DATA|PER[pc]ED| V | V | V | V | V | [sc] | V | V | V | V | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | [ok,pc] | | - | - | - | - | - | - | - | - | - | - | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | | | | | | | | | | | | | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | SET_Q_CALLBAC|_FU[pc]) | V | [sc] | [sc] | [sc] | [sc] | V | [sc] | [sc] | [sc] | [sc] | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | [ok,pc] | | - | | | | | - | | | | | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | | | | | | | | | | | | | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | SET_Q_CALLBAC|_FU[pc]) | V | V | V | V | V | [sc] | V | V | V | V | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | [ok,pc] | | - | - | - | - | - | | - | - | - | - | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | | | | | | | | | | | | | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | SET_Q_PROC_MO|E(N[pc] | V | [sc] | [sc] | [sc] | [sc] | V | [sc] | [sc] | [sc] | [sc] | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | [ok,pc] | | - | | | | | - | | | | | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | | | | | | | | | | | | | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | SET_Q_PROC_MO|E(Q[pc] | V | V | V | V | V | [sc] | V | V | V | V | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | [ok,pc] | | - | - | - | - | - | | - | - | - | - | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | | | | | | | | | | | | | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | SET_RECEIVE_T|PE [pc] | V | V | V | V | V | V | V | V | V | V | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | [ok,pc] | | - | - | - | - | - | - | - | - | - | - | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | | | | | | | | | | | | | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | SET_RETURN_CO|TRO[pc] | V | [sc] | [sc] | [sc] | [sc] | [sc] | [sc] | [sc] | [sc] | [sc] | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | [ok,pc] | | - | | | | | | | | | | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | | | | | | | | | | | | | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | SET_SEND_RECE|VE_[pc] | V | [sc] | [sc] | [sc] | [sc] | [sc] | [sc] | [sc] | [sc] | [sc] | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | [ok,pc] | | - | | | | | | | | | | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | | | | | | | | | | | | | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | SET_SEND_TYPE| [pc] | V | V | V | V | V | [sc] | V | V | V | V | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | [ok,pc] | | - | - | - | - | - | | - | - | - | - | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | | | | | | | | | | | | | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | SET_SYNC_LEVE| [pc] | V | [sc] | [sc] | [sc] | [sc] | [sc] | [sc] | [sc] | [sc] | [sc] | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | [ok,pc,pn] | | - | | | | | | | | | | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | | | | | | | | | | | | | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | SET_TP_NAME | [pc] | V | [sc] | [sc] | [sc] | [sc] | [sc] | [sc] | [sc] | [sc] | [sc] | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | [ok,pc] | | - | | | | | | | | | | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | | | | | | | | | | | | | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | SET_TRANSACTI|N_C[pc]OL| V | [sc] | [sc] | [sc] | [sc] | [sc] | [sc] | [sc] | [sc] | [sc] | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | [ok,pc] | | - | | | | | | | | | | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | | | | | | | | | | | | | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | WAIT_FOR_COMP|ETIOV | V | V | V | V | V | V | V | V | V | V | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | [ok] | / | % | % | % | % | % | % | % | % | % | % | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | [pc] | / | - | - | - | - | - | - | - | - | - | - | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | | | | | | | | | | | | | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ ------------------------------------------------------------------------------------ Effects of Calls to the SAA Resource Recovery Interface on Full-Duplex Conversations Table 33 shows the state transitions resulting from calls to the SAA resource recovery interface on full-duplex conversations. This table applies only to conversations with sync_level set to CM_SYNC_POINT_NO_CONFIRM. Commit and Backout are resource recovery calls. Their return codes are as follows. +-------------+------------------------------------------------------+ | ABBREVIATION| MEANING | +-------------+------------------------------------------------------+ | bo | RR_BACKED_OUT | +-------------+------------------------------------------------------+ | bom | RR_BACKED_OUT_OUTCOME_MIXED | +-------------+------------------------------------------------------+ | bop | RR_BACKED_OUT_OUTCOME_PENDING | +-------------+------------------------------------------------------+ | com | RR_COMMITTED_OUTCOME_MIXED | +-------------+------------------------------------------------------+ | cop | RR_COMMITTED_OUTCOME_PENDING | +-------------+------------------------------------------------------+ | ok | RR_OK | +-------------+------------------------------------------------------+ | sc | RR_STATE_CHECK | +-------------+------------------------------------------------------+ +--------------------------------------------------------------------------------------------------------------------------------+ | Table 33. States and Transitions for Protected Full-Duplex Conversations (CPIRR) | +--------------+-----------------------------------------------------------------------------------------------------------------+ | | USED BY CPI-C FDX CONVERSATIONS | | +---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | | RESET | INI- | CONFIRM- | DEFER- | SYNC- | SYNC-PT-| INI- | SEND- | RECEIVE- | SEND- | PREPARED| | | | TIALIZE | DEALLOC | DEALLOC | POINT | DEALLOC | TIALIZE- | ONLY | ONLY | RECEIVE | | | INPUTS | | | | | | | INCOMING | | | | | | | 1 | 2 | 8 | 10 | 11 | 13 | 14 | 15 | 16 | 17 | 18 | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | COMMIT | [sc] | V(26) | V(26) | V | V | V | V(26) | [sc] | [sc] | V | V | | CALL(25) | | | | | | | | | | | | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | [ok,com,cop] | - | - | | 1 | 17 | 1 | - | | | -(27) | 17(28) | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | [bo,bom,bop] | | - | - | 17 | 17 | 17 | - | | | - | 17 | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | [fa,sc] | | - | - | - | - | - | - | | | - | - | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | | | | | | | | | | | | | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | BACKOUT | V | V(26) | V(26) | V | V | V | V(26) | [sc] | [sc] | V | V | | CALL(29) | | | | | | | | | | | | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | [bo,bom,bop] | - | - | | 17 | 17 | 17 | - | | | - | 17 | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | | | | | | | | | | | | | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ ------------------------------------------------------------------------ Effects of Calls on Full-Duplex Conversations to the X/Open TX Interface Table 34 shows the state transitions resulting from calls to the X/Open TX interface on full-duplex conversations. This table applies only to conversations with sync_level set to CM_SYNC_POINT_NO_CONFIRM. The following abbreviations are used for return codes in Table 34: +-------------+------------------------------------------------------+ | ABBREVIATION| MEANING | +-------------+------------------------------------------------------+ | bo | TX_ROLLBACK or TX_ROLLBACK_NO_BEGIN | +-------------+------------------------------------------------------+ | bom | TX_ROLLBACK_MIXED or TX_ROLLBACK_MIXED_NO_BEGIN | +-------------+------------------------------------------------------+ | bop | TX_ROLLBACK_HAZARD or TX_ROLLBACK_HAZARD_NO_BEGIN | +-------------+------------------------------------------------------+ | com | TX_MIXED or TX_MIXED_NO_BEGIN | +-------------+------------------------------------------------------+ | cop | TX_HAZARD or TX_HAZARD_NO_BEGIN | +-------------+------------------------------------------------------+ | fa | TX_FAIL | +-------------+------------------------------------------------------+ | ok | TX_OK or TX_NO_BEGIN | +-------------+------------------------------------------------------+ | sc | TX_PROTOCOL_ERROR | +-------------+------------------------------------------------------+ +--------------------------------------------------------------------------------------------------------------------------------+ | Table 34. States and Transitions for Protected Full-Duplex Conversations (X/Open TX) | +--------------+-----------------------------------------------------------------------------------------------------------------+ | | USED BY CPI-C FDX CONVERSATIONS | | +---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | | RESET | INI- | CONFIRM- | DEFER- | SYNC- | SYNC-PT-| INI- | SEND- | RECEIVE- | SEND- | PREPARED| | | | TIALIZE | DEALLOC | DEALLOC | POINT | DEALLOC | TIALIZE- | ONLY | ONLY | RECEIVE | | | INPUTS | | | | | | | INCOMING | | | | | | | 1 | 2 | 8 | 10 | 11 | 13 | 14 | 15 | 16 | 17 | 18 | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | TX_COMMIT | [sc](30)| V(31) | V(31) | V | V | V | V(31) | [sc] | [sc] | V | V | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | [ok,com,cop] | | - | - | 1 | 17 | 1 | - | | | -(32) | 17(33) | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | [bo,bom,bop] | | - | - | 17 | 17 | 17 | - | | | - | 17 | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | [fa] | | - | - | - | - | - | - | | | - | - | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | [sc] | | - | - | - | - | - | - | | | - | - | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | | | | | | | | | | | | | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | TX_ROLLBACK | V(34) | V(31) | V(31) | V | V | V | V(31) | [sc] | [sc] | V | V | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | [bo,bom,bop] | - | - | | 17 | 17 | 17 | - | | | - | 17 | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | [fa] | | - | | - | - | - | - | | | - | - | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | | | | | | | | | | | | | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | TX_BEGIN | - | - | / | - | - | / | - | - | - | - | / | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | TX_CLOSE | - | - | - | - | - | - | - | - | - | - | - | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | TX_INFO | - | - | - | - | - | - | - | - | - | - | - | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | TX_OPEN | - | - | - | - | - | - | - | - | - | - | - | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | TX_SET_COMMIT|RETU-N | - | - | - | - | - | - | - | - | - | - | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | TX_SET_TRANS_|ONTR-L | - | - | - | - | - | - | - | - | - | - | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ | TX_SET_TRANS_|IMEO-T | - | - | - | - | - | - | - | - | - | - | +--------------+---------+---------+----------+---------+----------+---------+----------+---------+----------+---------+---------+ ---------------------------------------------------------------------------------------------------------------------------------- Appendix D. Mapping CPI Communications to LU 6.2 and OSI TP CRMs This appendix is intended to help programmers match CPI Communications functions to equivalent LU 6.2 and OSI TP functions. It is divided into two sections, one for LU 6.2 and one for OSI TP. Some CPI Communications functions are not part of the LU 6.2 or OSI TP services. Specifically, these functions are provided by calls that map to local function only. The following is a list of such calls: o Convert_Incoming o Convert_Outgoing o Extract_Conversation_Context o Extract_Initialization_Data o Extract_Maximum_Buffer_Size o Extract_Partner_ID o Extract_Secondary_Information o Release_Local_TP_Name o Set_Partner_ID o Set_Processing_Mode o Set_Queue_Callback_Function o Set_Queue_Processing_Mode o Specify_Local_TP_Name o Wait_For_Completion o Wait_For_Conversation Calls that are not specifically a part of LU 6.2 or OSI TP services are not listed in the CPI Communications mappings to LU 6.2 and OSI TP. ---------------------------------- CPI Communications and LU 6.2 CRMs This section is intended for programmers who are familiar with the LU 6.2 application programming interface. (LU 6.2 is also known as Advanced Program-to-Program Communications or APPC.) It describes the functional relationship between the APPC "verbs" and the CPI Communications calls described in this manual. The CPI Communications calls have been built on top of the LU 6.2 verbs described in SNA Transaction Programmer's Reference Manual for LU Type 6.2. Table 35 beginning on topic 2 shows the relationship between APPC verbs and CPI Communications calls. Use this table to determine how the function of a particular LU 6.2 verb is provided through CPI Communications. NOTE: Although much of the LU 6.2 function has been included in CPI Communications, some of the function has not. Likewise, CPI Communications contains features that are not found in LU 6.2. These features are differences in syntax. The semantics of LU 6.2 function have not been changed or extended. CPI Communications contains the following features not found in LU 6.2: o The Initialize_Conversation call and side information, used to initialize conversation characteristics without requiring the application program to explicitly specify these parameters. o A conversation state of SEND-PENDING (discussed in more detail in "Send-Pending State and the error_direction Characteristic"). o The Accept_Conversation call for use by a remote program to explicitly establish a conversation, the conversation identifier, and the conversation's characteristics. o The error_direction conversation characteristic (discussed in more detail in "Send-Pending State and the error_direction Characteristic"). o A send_type conversation characteristic for use in combining functions (this function was available with LU 6.2 verbs, but the verbs had to be issued separately). o The capability to return both data and conversation status on the same Receive call. CPI Communications does not support the following functions that are available with the LU 6.2 interface: o MAP_NAME o USER_CONTROL_DATA Finally, to increase portability between systems, the character sets used to specify the partner TP_name, partner_LU_name, and log_data have been modified slightly from the character sets allowed by LU 6.2. To answer specific questions of compatibility, check the character sets described in Appendix A, "Variables and Characteristics." NOTE: A publication that may be of interest to APPC programmers is The APPC Resource Book (G325-0055). It lists over 200 courses and books offered by IBM and other companies on CPI Communications, APPC, and related topics. This book also includes extensive directories of more than 350 APPC platforms, gateways, applications, and development tools. Send-Pending State and the error_direction Characteristic The SEND-PENDING state and error_direction characteristic are used in CPI Communications to eliminate ambiguity about the source of some errors. A program using CPI Communications can receive data and a change-of-direction indication at the same time. This "double function" creates a possibly ambiguous error condition, since it is impossible to determine whether a reported error (from Send_Error) was encountered because of the received data or after the processing of the change of direction. The ambiguity is eliminated in CPI Communications by use of the SEND-PENDING state and error_direction characteristic. CPI Communications places the conversation in SEND-PENDING state whenever the program has received data and a status_received parameter of CM_SEND_RECEIVED (indicating a change of direction). Then, if the program encounters an error, it uses the Set_Error_Direction call to indicate how the error occurred. If the conversation is in SEND-PENDING state and the program issues a Send_Error call, CPI Communications examines the error_direction characteristic and notifies the partner program accordingly: o If error_direction is set to CM_RECEIVE_ERROR, the partner program receives a return_code of CM_PROGRAM_ERROR_PURGING. This indicates that the error at the remote program occurred in the data, before (in LU 6.2 terms) the change-direction indicator was received. o If error_direction is set to CM_SEND_ERROR, the partner program receives a return_code of CM_PROGRAM_ERROR_NO_TRUNC. This indicates that the error at the remote program occurred in the send processing after the change-direction indicator was received. For an example of how CPI Communications uses the SEND-PENDING state and the error_direction characteristic, see "Example 8: Error Direction and Send-Pending State" on page 1. CPI Communications Programs Communicating with APPC Programs Programs written using CPI Communications can communicate with APPC programs. Some examples of the limitations on the APPC program are: o CPI Communications does not allow the specification of MAP_NAME. o CPI Communications does not allow the specification of User_Control_Data. o APPC programs with names containing characters no longer allowed may require a name change. See "SNA Service Transaction Programs" for a discussion of naming conventions for service transaction programs. SNA Service Transaction Programs If a CPI Communications program wants to specify an SNA service transaction program, the character set shown for TP_name in Appendix A, "Variables and Characteristics" is inadequate. The first character of an SNA service transaction program name is a character with a value in the range from X'00' through X'0D' or X'10' through X'3F' (excluding X'0E' and X'0F'). Refer to SNA Transaction Programmer's Reference Manual for LU Type 6.2 for more details on SNA service transaction programs. A CPI Communications program that has the appropriate privilege may specify the name of an SNA service transaction program for its partner TP_name. PRIVILEGE is an identification that a product or installation defines in order to differentiate LU service transaction programs from other programs, such as application programs. TP_name cannot specify an SNA service transaction program name at the mapped conversation protocol boundary. NOTE: Because of the special nature of SNA service transaction program names, they cannot be specified on the Set_TP_Name call in a non-EBCDIC environment. A CPI Communications program in a non-EBCDIC environment wanting to establish a conversation with an SNA service transaction program must ensure that the desired TP_name is included in the side information. Relationship between LU 6.2 Verbs and CPI Communications Calls Table 35 through Table 40 show CPI Communications calls on the left side and LU 6.2 verbs and their parameters across the top. The tables relate a verb or verb parameter to a call (not a call to a verb). A letter at the intersection of a verb or verb parameter column and a call row is interpreted as follows: D This parameter has been set to a default value by the CPI Communications call. Default values can be found in the individual call descriptions. X A similar or equal function for the LU 6.2 verb or parameter is available from the CPI Communications call. If more than one X appears on a line for a verb, the function is available by issuing a combination of the calls. S This parameter can be set using the CPI Communications call. NOTE: The mapping for the following calls is applicable for half-duplex conversations only: o Confirm o Prepare_To_Receive o Request_To_Send o Set_Error_Direction o Set_Prepare_To_Receive_Type o Test_Request_To_Send_Received Refer to the published book (SC31-6180-00) to view the following table. +--------------------------------------------------------------------------------------------------------------------------------+ | Table 35. Relationship of LU 6.2 Verbs to CPI Communications Calls (Part 1) | +----------------------------------+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+ | |C_|L-O|AT| - | | - | | - | | - |C_|O-F|RM| MC|CO|E-L|OC|TMC|CL|E-_|TT|I-U|ES| - | | - | | _ _ _ _ | | | LU|OD|ETP|YP| RE|ON|ESY|EC|RPI|OU|_RE|XP|DIT|D_|ATY|XP|DIT|D_|APA|AR|RMO|YN|ACO|ON|SSE|ON|ERSATION_GROUP_ID _ _ _ _ _ _ _ _ _ _ __ __ _ _ __ _ _ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | CPI COMMUNICATIONS CALLS | | | | | | | | | | | | | | | | | | | | | | | | | | | | +----------------------------------+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+ | STARTER SET | | | | | | | | | | | | | | | | | | | | | | | | | | | | +----------------------------------+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+ | Accept_Conversation | | | | | | | | | | | | | | | | D | | | | | | | | | | | | +----------------------------------+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+ | Allocate |X | | | | | | | | | | | | | | | | | | | | | | | | | | | +----------------------------------+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+ | Deallocate | | | | | | | | | | | | | | |X | | | | | | | | | | | | | +----------------------------------+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+ | Initialize_Conversation |X | D |D | D |D | D | | D |D | D | | | | | | D | | | | | | | | | | | | +----------------------------------+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+ | Receive | | | | | | | | | | | | | | | | | | | | | | | | | | | | +----------------------------------+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+ | Send_Data | | | | | | | | | | | | | | | | | | | | | | | | | | | | +----------------------------------+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+ | ADVANCED FUNCTION | | | | | | | | | | | | | | | | | | | | | | | | | | | | +----------------------------------+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+ | Accept_Incoming | | | | | | | | | | | | | | | | | | | | | | | | | | | | +----------------------------------+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+ | Cancel_Conversation | | | | | | | | | | | | | | |X | D | | | | | | | | | | | | +----------------------------------+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+ | Confirm | | | | | | | | | | |X | X |X | | | | | | | | | | | | | | | +----------------------------------+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+ | Confirmed | | | | | | | | | | | | | | X | | | | | | | | | | | | | | +----------------------------------+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+ | Extract_Conversation_State | | | | | | | | | | | | | | | | | | |X | | | | | X | | | | +----------------------------------+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+ | Extract_Conversation_Type | | | | | | | | | | | | | | | | | | | | | | | | | | | | +----------------------------------+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+ | Extract_Mode_Name | | | | | | | | | | | | | | | | | | |X | | | X | | | | | | +----------------------------------+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+ | Extract_Partner_LU_Name | | | | | | | | | | | | | | | | | | |X | X |X | | | | | | | +----------------------------------+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+ | Extract_Security_User_ID | | | | | | | | | | | | | | | | | | | | | | | | | | | | +----------------------------------+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+ | Extract_Send_Receive_Mode | | | | | | | | | | | | | | | | | | | | | | | | | | | | +----------------------------------+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+ | Extract_Sync_Level | | | | | | | | | | | | | | | | | | |X | | | |X | | | | | +----------------------------------+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+ | Extract_TP_Name | | | | | | | | | | | | | | | | | | | | | | | | | | | | +----------------------------------+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+ | Flush | | | | | | | | | | | | | | | | | | X | | | | | | | | | | +----------------------------------+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+ | Initialize_For_Incoming | | | | | | | | | | | | | | | | D | | | | | | | | | | | | +----------------------------------+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+ | Prepare | | | | | | | | | | | | | | | | | | | | | | | | | | | | +----------------------------------+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+ | Prepare_To_Receive | | | | | | | | | | | | | | | | | | | | | | | | | | | | +----------------------------------+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+ | Receive_Expedited_Data | | | | | | | | | | | | | | | | | | | | | | | | | | | | +----------------------------------+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+ | Request_To_Send | | | | | | | | | | | | | | | | | | | | | | | | | | | | +----------------------------------+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+ | Send_Error | | | | | | | | | | | | | | | | | | | | | | | | | | | | +----------------------------------+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+ | Send_Expedited_Data | | | | | | | | | | | | | | | | | | | | | | | | | | | | +----------------------------------+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+ | Set_Confirmation_Urgency | | | | | | | | | | | | | | | | | | | | | | | | | | | | +----------------------------------+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+ | |X | | | | | | | |S | | | | | | | | | | | | | | | | | | | | Set_Conversation_Security_Passwor| | | | | | | | | | | | | | | | | | | | | | | | | | | | +----------------------------------+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+ | Set_Conversation_Security_Type |X | | | | | | | |S | | | | | | | | | | | | | | | | | | | +----------------------------------+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+ | |X | | | | | | | |S | | | | | | | | | | | | | | | | | | | | Set_Conversation_Security_User_ID| | | | | | | | | | | | | | | | | | | | | | | | | | | | +----------------------------------+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+ | Set_Conversation_Type |X | | | | | | | | | | | | | | | | | | | | | | | | | | | +----------------------------------+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+ | Set_Deallocate_Type | | | | | | | | | | | | | | |X | S | | | | | | | | | | | | +----------------------------------+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+ | Set_Error_Direction | | | | | | | | | | | | | | | | | | | | | | | | | | | | +----------------------------------+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+ | Set_Fill | | | | | | | | | | | | | | | | | | | | | | | | | | | | +----------------------------------+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+ | Set_Initialization_Data |X | | | | | | | | | S | | | | | | | | | | | | | | | | | | +----------------------------------+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+ | Set_Log_Data | | | | | | | | | | | | | | | | | | | | | | | | | | | | +----------------------------------+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+ | Set_Mode_Name |X | |S | | | | | | | | | | | | | | | | | | | | | | | | | +----------------------------------+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+ | Set_Partner_LU_Name |X | S | | | | | | | | | | | | | | | | | | | | | | | | | | +----------------------------------+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+ | Set_Prepare_To_Receive_Type | | | | | | | | | | | | | | | | | | | | | | | | | | | | +----------------------------------+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+ | Set_Receive_Type | | | | | | | | | | | | | | | | | | | | | | | | | | | | +----------------------------------+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+ | Set_Return_Control |X | | | | | S | | | | | | | | | | | | | | | | | | | | | | +----------------------------------+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+ | Set_Send_Receive_Mode |X | | | |S | | | | | | | | | | | | | | | | | | | | | | | +----------------------------------+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+ | Set_Send_Type | | | | | | | | | | | | | | | | | | | | | | | | | | | | +----------------------------------+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+ | Set_Sync_Level |X | | | | | | | S | | | | | | | | | | | | | | | | | | | | +----------------------------------+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+ | Set_TP_Name |X | | | S | | | | | | | | | | | | | | | | | | | | | | | | +----------------------------------+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+ | Test_Request_To_Send_Received | | | | | | | | | | | | | | | | | | | | | | | | | | | | +----------------------------------+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+ +--------------------------------------------------------------------------------------------------------------------------------+ | Table 36. Relationship of LU 6.2 Verbs to CPI Communications Calls (Part 2) | +------------------------------------+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+--+ | |C_|OMC|PMC|P-E|AR|_MC|R-C|IV|_-N|_-A|TMC|RC|_-X|EMC|RE|E-V|_-M|E-I|CE|EMC|S-N|OD|T-D| - | | _ __ _ _ _ _ _ _ _ _ _ __ | | | | | TY|OC|S | RE|XP|DWH|TMA|CNA|EQ|TEX|EDI|EQ|TEX|EWH|TMA|CN|MED|EMA|SE|MEN|RRE|XP|DITED_DATAIRECEIVED _ _ _ _ _ _ _ _ _ _ _ _ __ _ _ _ _ _ _ _ _ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | CPI COMMUNICATIONS CALLS | | | | | | | | | | | | | | | | | | | | | | | | | | +------------------------------------+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+--+ | STARTER SET | | | | | | | | | | | | | | | | | | | | | | | | | | +------------------------------------+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+--+ | Accept_Conversation | | | | D |D | | | | | | | | | | | | | | | | | | | | | +------------------------------------+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+--+ | Allocate | | | | | | | | | | | | | | | | | | | | | | | | | | +------------------------------------+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+--+ | Deallocate | | | | | | | | | | | | | | | | | | | | | | | | | | +------------------------------------+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+--+ | Initialize_Conversation | | | | D |D | | | | | | | | | | | | | | | | | | | | | +------------------------------------+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+--+ | Receive | | | | | | X | X |X | X | | | | | X |X | X | X | | | | | | | | | +------------------------------------+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+--+ | Send_Data | | | | | | | | | | | | | | | | | | | | X | | | | X |X | +------------------------------------+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+--+ | ADVANCED FUNCTION | | | | | | | | | | | | | | | | | | | | | | | | | | +------------------------------------+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+--+ | Accept_Incoming | | | | | | | | | | | | | | | | | | | | | | | | | | +------------------------------------+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+--+ | Cancel_Conversation | | | | | | | | | | | | | | | | | | | | | | | | | | +------------------------------------+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+--+ | Confirm | | | | | | | | | | | | | | | | | | | | | | | | | | +------------------------------------+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+--+ | Confirmed | | | | | | | | | | | | | | | | | | | | | | | | | | +------------------------------------+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+--+ | Extract_Conversation_State | | | | | | | | | | | | | | | | | | | | | | | | | | +------------------------------------+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+--+ | Extract_Conversation_Type | | | | | | | | | | | | | | | | | | | | | | | | | | +------------------------------------+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+--+ | Extract_Mode_Name | | | | | | | | | | | | | | | | | | | | | | | | | | +------------------------------------+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+--+ | Extract_Partner_LU_Name | | | | | | | | | | | | | | | | | | | | | | | | | | +------------------------------------+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+--+ | Extract_Security_User_ID | | | | | | | | | | | | | | | | | | | | | | | | | | +------------------------------------+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+--+ | Extract_Send_Receive_Mode | | | | | | | | | | | | | | | | | | | | | | | | | | +------------------------------------+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+--+ | Extract_Sync_Level | | | | | | | | | | | | | | | | | | | | | | | | | | +------------------------------------+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+--+ | Extract_TP_Name | | | | | | | | | | | | | | | | | | | | | | | | | | +------------------------------------+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+--+ | Flush | | | | | | | | | | | | | | | | | | | | | | | | | | +------------------------------------+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+--+ | Initialize_For_Incoming | | | | D |D | | | | | | | | | | | | | | | | | | | | | +------------------------------------+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+--+ | Prepare | | X | | | | | | | | | | | | | | | | | | | | | | | | +------------------------------------+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+--+ | Prepare_To_Receive | | | X | | | | | | | | | | | | | | | | | | | | | | | +------------------------------------+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+--+ | Receive_Expedited_Data | | | | | | | | | | | X |X | X | | | | | | | | | | | | | +------------------------------------+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+--+ | Request_To_Send | | | | | | | | | | | | | | | | | | |X | | | | | | | +------------------------------------+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+--+ | Send_Error | | | | | | | | | | | | | | | | | | | | | | | | | | +------------------------------------+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+--+ | Send_Expedited_Data | | | | | | | | | | | | | | | | | | | | | | | | | | +------------------------------------+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+--+ | Set_Confirmation_Urgency | | | X | |S | | | | | | | | | | | | | | | | | | | | | +------------------------------------+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+--+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | Set_Conversation_Security_Password | | | | | | | | | | | | | | | | | | | | | | | | | | +------------------------------------+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+--+ | Set_Conversation_Security_Type | | | | | | | | | | | | | | | | | | | | | | | | | | +------------------------------------+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+--+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | Set_Conversation_Security_User_ID | | | | | | | | | | | | | | | | | | | | | | | | | | +------------------------------------+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+--+ | Set_Conversation_Type | | | | | | | | | | | | | | | | | | | | | | | | | | +------------------------------------+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+--+ | Set_Deallocate_Type | | | | | | | | | | | | | | | | | | | | | | | | | | +------------------------------------+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+--+ | Set_Error_Direction | | | | | | | | | | | | | | | | | | | | | | | | | | +------------------------------------+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+--+ | Set_Fill | | | | | | | | | | | | | | | | | | | | | | | | | | +------------------------------------+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+--+ | Set_Initialization_Data | | | | | | | | | | | | | | | | | | | | | | | | | | +------------------------------------+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+--+ | Set_Log_Data | | | | | | | | | | | | | | | | | | | | | | | | | | +------------------------------------+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+--+ | Set_Mode_Name | | | | | | | | | | | | | | | | | | | | | | | | | | +------------------------------------+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+--+ | Set_Partner_LU_Name | | | | | | | | | | | | | | | | | | | | | | | | | | +------------------------------------+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+--+ | Set_Prepare_To_Receive_Type | | | X | S | | | | | | | | | | | | | | | | | | | | | | +------------------------------------+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+--+ | Set_Receive_Type | | | | | | X | | | | | | | | X | | | | | | | | | | | | +------------------------------------+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+--+ | Set_Return_Control | | | | | | | | | | | | | | | | | | | | | | | | | | +------------------------------------+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+--+ | Set_Send_Receive_Mode | | | | | | | | | | | | | | | | | | | | | | | | | | +------------------------------------+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+--+ | Set_Send_Type | | | | | | | | | | | | | | | | | | | | | | | | | | +------------------------------------+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+--+ | Set_Sync_Level | | | | | | | | | | | | | | | | | | | | | | | | | | +------------------------------------+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+--+ | Set_TP_Name | | | | | | | | | | | | | | | | | | | | | | | | | | +------------------------------------+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+--+ | Test_Request_To_Send_Received | | | | | | | | | | | | | | | | | | | | | | | | | | +------------------------------------+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+--+ +--------------------------------------------------------------------------------------------------------------------------------+ | Table 37. Relationship of LU 6.2 Verbs to CPI Communications Calls (Part 3) | +------------------------------------+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+--+ | |C_|E-D|E-R|RMC|SE|D-E|PMC|TE|T-A|ABA|KGE|_T|_-R|P-R|IE| - | - | - |ET|TSE|_SY|CP|_WA|T-N|AI|_FOR_COMPLETION _ _ _ _ | | | RE|_EX|EDI|EQ|TEX|EDI|ES|DTE|TER|QIT|WN|FOW|YOW|EC|RSE|ULU|YPR|TE|TED|LUW|EQ|TOI|ERE|OU|CEVPOSTED _ _ _ _ _ _ __ __ _ _ _ _ __ __ __ _ _ __ _ _ _ _ _ _ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | CPI COMMUNICATIONS CALLS | | | | | | | | | | | | | | | | | | | | | | | | | | +------------------------------------+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+--+ | STARTER SET | | | | | | | | | | | | | | | | | | | | | | | | | | +------------------------------------+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+--+ | Accept_Conversation | | | | | | | | | | | | | | | | | | | | | | | | | | +------------------------------------+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+--+ | Allocate | | | | | | | | | | | | | | | | | | | | | | | | | | +------------------------------------+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+--+ | Deallocate | | | | | | | | | | | | | | | | | | | | | | | | | | +------------------------------------+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+--+ | Initialize_Conversation | | | | | | | | | | | | | | | | | | | | | | | | | | +------------------------------------+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+--+ | Receive | | | | | | | | | | | | | | | | | | | | | | | | | | +------------------------------------+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+--+ | Send_Data | | | | | | | | | | | | | | | | | | | | | | | | | | +------------------------------------+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+--+ | ADVANCED FUNCTION | | | | | | | | | | | | | | | | | | | | | | | | | | +------------------------------------+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+--+ | Accept_Incoming | | | | | | | | | | | | | | | | | | | | | | | | | | +------------------------------------+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+--+ | Cancel_Conversation | | | | | | | | | | | | | | | | | | | | | | | | | | +------------------------------------+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+--+ | Confirm | | | | | | | | | | | | | | | | | | | | | | | | | | +------------------------------------+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+--+ | Confirmed | | | | | | | | | | | | | | | | | | | | | | | | | | +------------------------------------+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+--+ | Extract_Conversation_State | | | | | | | | | | | | | | | | | | | | | | | | | | +------------------------------------+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+--+ | Extract_Conversation_Type | | | | | | | | | | | | | | | | | | |X | | | | | | | +------------------------------------+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+--+ | Extract_Mode_Name | | | | | | | | | | | | | | | | | | | | | | | | | | +------------------------------------+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+--+ | Extract_Partner_LU_Name | | | | | | | | | | | | | | | | | | | | | | | | | | +------------------------------------+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+--+ | Extract_Security_User_ID | | | | | | | | | | | X | | | |X | | | | | | | | | | | +------------------------------------+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+--+ | Extract_Send_Receive_Mode | | | | | | | | | | | | | | | | | | |X | | | | | | | +------------------------------------+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+--+ | Extract_Sync_Level | | | | | | | | | | | | | | | | | | | | | | | | | | +------------------------------------+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+--+ | Extract_TP_Name | | | | | | | | | | | X | | X | | | | | | | | | | | | | +------------------------------------+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+--+ | Flush | | | | | | | | | | | | | | | | | | | | | | | | | | +------------------------------------+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+--+ | Initialize_For_Incoming | | | | | | | | | | | | | | | | | | | | | | | | | | +------------------------------------+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+--+ | Prepare | | | | | | | | | | | | | | | | | | | | | | | | | | +------------------------------------+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+--+ | Prepare_To_Receive | | | | | | | | | | | | | | | | | | | | | | | | | | +------------------------------------+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+--+ | Receive_Expedited_Data | | | | | | | | | | | | | | | | | | | | | | | | | | +------------------------------------+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+--+ | Request_To_Send | | | | | | | | | | | | | | | | | | | | | | | | | | +------------------------------------+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+--+ | Send_Error |X | X | X | | | | | | | | | | | | | | | | | | | | | | | +------------------------------------+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+--+ | Send_Expedited_Data | | | | X |X | X | | | | | | | | | | | | | | | | | | | | +------------------------------------+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+--+ | Set_Confirmation_Urgency | | | | | | | | | | | | | | | | | | | | | | | | | | +------------------------------------+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+--+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | Set_Conversation_Security_Password | | | | | | | | | | | | | | | | | | | | | | | | | | +------------------------------------+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+--+ | Set_Conversation_Security_Type | | | | | | | | | | | | | | | | | | | | | | | | | | +------------------------------------+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+--+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | Set_Conversation_Security_User_ID | | | | | | | | | | | | | | | | | | | | | | | | | | +------------------------------------+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+--+ | Set_Conversation_Type | | | | | | | | | | | | | | | | | | | | | | | | | | +------------------------------------+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+--+ | Set_Deallocate_Type | | | | | | | | | | | | | | | | | | | | | | | | | | +------------------------------------+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+--+ | Set_Error_Direction |X | | | | | | | | | | | | | | | | | | | | | | | | | +------------------------------------+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+--+ | Set_Fill | | | | | | | | | | | | | | | | | | | | | | | | | | +------------------------------------+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+--+ | Set_Initialization_Data | | | | | | | | | | | | | | | | | | | | | | | | | | +------------------------------------+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+--+ | Set_Log_Data | | | | | | | | | | | | | | | | | | | | | | | | | | +------------------------------------+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+--+ | Set_Mode_Name | | | | | | | | | | | | | | | | | | | | | | | | | | +------------------------------------+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+--+ | Set_Partner_LU_Name | | | | | | | | | | | | | | | | | | | | | | | | | | +------------------------------------+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+--+ | Set_Prepare_To_Receive_Type | | | | | | | | | | | | | | | | | | | | | | | | | | +------------------------------------+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+--+ | Set_Receive_Type | | | | | | | | | | | | | | | | | | | | | | | | | | +------------------------------------+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+--+ | Set_Return_Control | | | | | | | | | | | | | | | | | | | | | | | | | | +------------------------------------+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+--+ | Set_Send_Receive_Mode | | | | | | | | | | | | | | | | | | | | | | | | | | +------------------------------------+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+--+ | Set_Send_Type | | | | | | | | | | | | | | | | | | | | | | | | | | +------------------------------------+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+--+ | Set_Sync_Level | | | | | | | | | | | | | | | | | | | | | | | | | | +------------------------------------+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+--+ | Set_TP_Name | | | | | | | | | | | | | | | | | | | | | | | | | | +------------------------------------+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+--+ | Test_Request_To_Send_Received | | | | | | | X | | X | | | | | | | | | | | | | | | | | +------------------------------------+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+---+--+---+---+--+---+---+--+ +--------------------------------------------------------------------------------------------------------------------------------+ | Table 38. Relationship of LU 6.2 Verbs to CPI Communications Calls (Part 4) | +-------------------------------------------+----+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---+---+ | | ALL|C-T| - | - | - | - | - | - | - | - | CON|I-M| - | CO|FDEA|L-C|T- | - | FL|SH | | | LU|NMOD|_TP|ETYP| RE|UCON|ESY|CSEC|RPI|P_ID| RE|_EXP|DIT|DEDA|ATY|ELOG|DEX|EDI|ED_DATA_RECEIVED _ _ _ _ _ _ _ _ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | CPI COMMUNICATIONS CALLS | | | | | | | | | | | | | | | | | | | | +-------------------------------------------+----+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---+---+ | STARTER SET | | | | | | | | | | | | | | | | | | | | +-------------------------------------------+----+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---+---+ | Accept_Conversation | | | | | | | | | | | | | | | | D | D | | | +-------------------------------------------+----+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---+---+ | Allocate | X | | | | | | | | | | | | | | | | | | | +-------------------------------------------+----+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---+---+ | Deallocate | | | | | | | | | | | | | | | X | | | | | +-------------------------------------------+----+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---+---+ | Initialize_Conversation | X | D | D | D | D | D | | D | D | D | | | | | | D | D | | | +-------------------------------------------+----+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---+---+ | Receive | | | | | | | | | | | | | | | | | | | | +-------------------------------------------+----+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---+---+ | Send_Data | | | | | | | | | | | | | | | | | | | | +-------------------------------------------+----+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---+---+ | ADVANCED FUNCTION | | | | | | | | | | | | | | | | | | | | +-------------------------------------------+----+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---+---+ | Accept_Incoming | | | | | | | | | | | | | | | | | | | | +-------------------------------------------+----+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---+---+ | Cancel_Conversation | | | | | | | | | | | | | | | | | | | | +-------------------------------------------+----+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---+---+ | Confirm | | | | | | | | | | | X | X | X | | | | | | | +-------------------------------------------+----+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---+---+ | Confirmed | | | | | | | | | | | | | | X | | | | | | +-------------------------------------------+----+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---+---+ | Extract_Conversation_State | | | | | | | | | | | | | | | | | | | | +-------------------------------------------+----+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---+---+ | Extract_Conversation_Type | | | | | | | | | | | | | | | | | | | | +-------------------------------------------+----+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---+---+ | Extract_Mode_Name | | | | | | | | | | | | | | | | | | | | +-------------------------------------------+----+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---+---+ | Extract_Partner_LU_Name | | | | | | | | | | | | | | | | | | | | +-------------------------------------------+----+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---+---+ | Extract_Security_User_ID | | | | | | | | | | | | | | | | | | | | +-------------------------------------------+----+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---+---+ | Extract_Send_Receive_Mode | | | | | | | | | | | | | | | | | | | | +-------------------------------------------+----+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---+---+ | Extract_Sync_Level | | | | | | | | | | | | | | | | | | | | +-------------------------------------------+----+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---+---+ | Extract_TP_Name | | | | | | | | | | | | | | | | | | | | +-------------------------------------------+----+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---+---+ | Flush | | | | | | | | | | | | | | | | | | | X | +-------------------------------------------+----+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---+---+ | Initialize_For_Incoming | | | | | | | | | | | | | | | | D | D | | | +-------------------------------------------+----+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---+---+ | Prepare | | | | | | | | | | | | | | | | | | | | +-------------------------------------------+----+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---+---+ | Prepare_To_Receive | | | | | | | | | | | | | | | | | | | | +-------------------------------------------+----+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---+---+ | Receive_Expedited_Data | | | | | | | | | | | | | | | | | | | | +-------------------------------------------+----+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---+---+ | Request_To_Send | | | | | | | | | | | | | | | | | | | | +-------------------------------------------+----+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---+---+ | Send_Error. | | | | | | | | | | | | | | | | | | | | +-------------------------------------------+----+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---+---+ | Send_Expedited_Data | | | | | | | | | | | | | | | | | | | | +-------------------------------------------+----+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---+---+ | Set_Confirmation_Urgency | | | | | | | | | | | | | | | | | | | | +-------------------------------------------+----+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---+---+ | Set_Conversation_Security_Password | X | | | | | | | | S | | | | | | | | | | | +-------------------------------------------+----+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---+---+ | Set_Conversation_Security_Type | X | | | | | | | | S | | | | | | | | | | | +-------------------------------------------+----+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---+---+ | Set_Conversation_Security_User_ID | X | | | | | | | | S | | | | | | | | | | | +-------------------------------------------+----+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---+---+ | Set_Conversation_Type | X | | | | S | | | | | | | | | | | | | | | +-------------------------------------------+----+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---+---+ | Set_Deallocate_Type | | | | | | | | | | | | | | | X | S | | | | +-------------------------------------------+----+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---+---+ | Set_Error_Direction | | | | | | | | | | | | | | | | | | | | +-------------------------------------------+----+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---+---+ | Set_Fill | | | | | | | | | | | | | | | | | | | | +-------------------------------------------+----+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---+---+ | Set_Initialization_Data | X | | | | | | | | | S | | | | | | | | | | +-------------------------------------------+----+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---+---+ | Set_Log_Data | | | | | | | | | | | | | | | X | | S | | | +-------------------------------------------+----+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---+---+ | Set_Mode_Name | X | | S | | | | | | | | | | | | | | | | | +-------------------------------------------+----+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---+---+ | Set_Partner_LU_Name | X | S | | | | | | | | | | | | | | | | | | +-------------------------------------------+----+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---+---+ | Set_Prepare_To_Receive_Type | | | | | | | | | | | | | | | | | | | | +-------------------------------------------+----+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---+---+ | Set_Receive_Type | | | | | | | | | | | | | | | | | | | | +-------------------------------------------+----+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---+---+ | Set_Return_Control | X | | | | | S | | | | | | | | | | | | | | +-------------------------------------------+----+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---+---+ | Set_Send_Receive_Mode | X | | | | S | | | | | | | | | | | | | | | +-------------------------------------------+----+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---+---+ | Set_Send_Type | | | | | | | | | | | | | | | | | | | | +-------------------------------------------+----+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---+---+ | Set_Sync_Level | X | | | | | | | S | | | | | | | | | | | | +-------------------------------------------+----+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---+---+ | Set_TP_Name | X | | | S | | | | | | | | | | | | | | | | +-------------------------------------------+----+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---+---+ | Test_Request_To_Send_Received | | | | | | | | | | | | | | | | | | | | +-------------------------------------------+----+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---+---+ +--------------------------------------------------------------------------------------------------------------------------------+ | Table 39. Relationship of LU 6.2 Verbs to CPI Communications Calls (Part 5) | +--------------------------------------+---+---+---+---+---+---+--+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+--+ | | GE|_-T|R-B|T-S| - | - | | - | - | PO|T-O|_PR|PPR|P-R|_-O|RRE|E-V|_-N|_-A|T- | RE|E-V|_E|PEDITED_DATA _ _ _ _ | | | PA|TPA|TMO|ESY|CCO|ON|SSE|SCO|VER|AFI|L_G|OUP|ITY|ELO|KS | FI|LRE|_EX|EWH|TDR|CRE|XP|DITED_DATAIRECEIVED __ _ __ _ _ __ _ _ _ ___ __ _ _ _ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | CPI COMMUNICATIONS CALLS | | | | | | | | | | | | | | | | | | | | | | | | +--------------------------------------+---+---+---+---+---+---+--+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+--+ | STARTER SET | | | | | | | | | | | | | | | | | | | | | | | | +--------------------------------------+---+---+---+---+---+---+--+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+--+ | Accept_Conversation | | | | | | | | | | | | | | D | D | | D | | | | | | | +--------------------------------------+---+---+---+---+---+---+--+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+--+ | Allocate | | | | | | | | | | | | | | | | | | | | | | | | +--------------------------------------+---+---+---+---+---+---+--+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+--+ | Deallocate | | | | | | | | | | | | | | | | | | | | | | | | +--------------------------------------+---+---+---+---+---+---+--+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+--+ | Initialize_Conversation | | | | | | | | | | | | | | D | D | | D | | | | | | | +--------------------------------------+---+---+---+---+---+---+--+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+--+ | Receive | | | | | | | | | | | | | | | | X | | X | X | X | | | | +--------------------------------------+---+---+---+---+---+---+--+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+--+ | Send_Data | | | | | | | | | | | | | | | | | | | | | | | | +--------------------------------------+---+---+---+---+---+---+--+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+--+ | ADVANCED FUNCTION | | | | | | | | | | | | | | | | | | | | | | | | +--------------------------------------+---+---+---+---+---+---+--+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+--+ | Accept_Incoming | | | | | | | | | | | | | | | | | | | | | | | | +--------------------------------------+---+---+---+---+---+---+--+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+--+ | Cancel_Conversation | | | | | | | | | | | | | | | | | | | | | | | | +--------------------------------------+---+---+---+---+---+---+--+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+--+ | Confirm | | | | | | | | | | | | | | | | | | | | | | | | +--------------------------------------+---+---+---+---+---+---+--+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+--+ | Confirmed | | | | | | | | | | | | | | | | | | | | | | | | +--------------------------------------+---+---+---+---+---+---+--+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+--+ | Extract_Conversation_State | X | | | | | X | | | | | | | | | | | | | | | | | | +--------------------------------------+---+---+---+---+---+---+--+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+--+ | Extract_Conversation_Type | | | | | | | | | | | | | | | | | | | | | | | | +--------------------------------------+---+---+---+---+---+---+--+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+--+ | Extract_Mode_Name | X | | | X | | | | | | | | | | | | | | | | | | | | +--------------------------------------+---+---+---+---+---+---+--+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+--+ | Extract_Partner_LU_Name | X | X | X | | | | | | | | | | | | | | | | | | | | | +--------------------------------------+---+---+---+---+---+---+--+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+--+ | Extract_Security_User_ID | | | | | | | | | | | | | | | | | | | | | | | | +--------------------------------------+---+---+---+---+---+---+--+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+--+ | Extract_Send_Receive_Mode | | | | | | | | | | | | | | | | | | | | | | | | +--------------------------------------+---+---+---+---+---+---+--+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+--+ | Extract_Sync_Level | X | | | | X | | | | | | | | | | | | | | | | | | | +--------------------------------------+---+---+---+---+---+---+--+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+--+ | Extract_TP_Name | | | | | | | | | | | | | | | | | | | | | | | | +--------------------------------------+---+---+---+---+---+---+--+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+--+ | Flush | | | | | | | | | | | | | | | | | | | | | | | | +--------------------------------------+---+---+---+---+---+---+--+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+--+ | Initialize_For_Incoming | | | | | | | | | | | | | | D | D | | D | | | | | | | +--------------------------------------+---+---+---+---+---+---+--+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+--+ | Prepare | | | | | | | | | | | | X | | | | | | | | | | | | +--------------------------------------+---+---+---+---+---+---+--+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+--+ | Prepare_To_Receive | | | | | | | | | | | | | X | | | | | | | | | | | +--------------------------------------+---+---+---+---+---+---+--+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+--+ | Receive_Expedited_Data | | | | | | | | | | | | | | | | | | | | | X | X |X | +--------------------------------------+---+---+---+---+---+---+--+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+--+ | Request_To_Send | | | | | | | | | | | | | | | | | | | | | | | | +--------------------------------------+---+---+---+---+---+---+--+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+--+ | Send_Error | | | | | | | | | | | | | | | | | | | | | | | | +--------------------------------------+---+---+---+---+---+---+--+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+--+ | Send_Expedited_Data | | | | | | | | | | | | | | | | | | | | | | | | +--------------------------------------+---+---+---+---+---+---+--+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+--+ | Set_Confirmation_Urgency | | | | | | | | | | | | | X | | S | | | | | | | | | +--------------------------------------+---+---+---+---+---+---+--+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+--+ | Set_Conversation_Security_Password | | | | | | | | | | | | | | | | | | | | | | | | +--------------------------------------+---+---+---+---+---+---+--+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+--+ | Set_Conversation_Security_Type | | | | | | | | | | | | | | | | | | | | | | | | +--------------------------------------+---+---+---+---+---+---+--+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+--+ | Set_Conversation_Security_User_ID | | | | | | | | | | | | | | | | | | | | | | | | +--------------------------------------+---+---+---+---+---+---+--+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+--+ | Set_Conversation_Type | | | | | | | | | | | | | | | | | | | | | | | | +--------------------------------------+---+---+---+---+---+---+--+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+--+ | Set_Deallocate_Type | | | | | | | | | | | | | | | | | | | | | | | | +--------------------------------------+---+---+---+---+---+---+--+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+--+ | Set_Error_Direction | | | | | | | | | | | | | | | | | | | | | | | | +--------------------------------------+---+---+---+---+---+---+--+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+--+ | Set_Fill | | | | | | | | | | | | | | | | X | S | | | | | | | +--------------------------------------+---+---+---+---+---+---+--+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+--+ | Set_Initialization_Data | | | | | | | | | | | | | | | | | | | | | | | | +--------------------------------------+---+---+---+---+---+---+--+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+--+ | Set_Log_Data | | | | | | | | | | | | | | | | | | | | | | | | +--------------------------------------+---+---+---+---+---+---+--+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+--+ | Set_Mode_Name | | | | | | | | | | | | | | | | | | | | | | | | +--------------------------------------+---+---+---+---+---+---+--+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+--+ | Set_Partner_LU_Name | | | | | | | | | | | | | | | | | | | | | | | | +--------------------------------------+---+---+---+---+---+---+--+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+--+ | Set_Prepare_To_Receive_Type | | | | | | | | | | | | | X | S | | | | | | | | | | +--------------------------------------+---+---+---+---+---+---+--+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+--+ | Set_Receive_Type | | | | | | | | | | | | | | | | X | | | | | | | | +--------------------------------------+---+---+---+---+---+---+--+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+--+ | Set_Return_Control | | | | | | | | | | | | | | | | | | | | | | | | +--------------------------------------+---+---+---+---+---+---+--+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+--+ | Set_Send_Receive_Mode | | | | | | | | | | | | | | | | | | | | | | | | +--------------------------------------+---+---+---+---+---+---+--+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+--+ | Set_Send_Type | | | | | | | | | | | | | | | | | | | | | | | | +--------------------------------------+---+---+---+---+---+---+--+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+--+ | Set_Sync_Level | | | | | | | | | | | | | | | | | | | | | | | | +--------------------------------------+---+---+---+---+---+---+--+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+--+ | Set_TP_Name | | | | | | | | | | | | | | | | | | | | | | | | +--------------------------------------+---+---+---+---+---+---+--+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+--+ | Test_Request_To_Send_Received | | | | | | | | | | | | | | | | | | | | | | | | +--------------------------------------+---+---+---+---+---+---+--+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+--+ +--------------------------------------------------------------------------------------------------------------------------------+ | Table 40. Relationship of LU 6.2 Verbs to CPI Communications Calls (Part 6) | +----------------------------------------+----+---+---+---+---+----+---+---+---+---+----+---+---+---+---+----+---+---+---+---+---+ | | REC|I-E|I-M|D-A|E- | REQ|ESE|D-D|T-D| - | SEN|_-X|E-I|ESE|D-E|R-R | - | - | TE|T- | - | _ __ _ _ | | | FI|LRE|_EX|EWH|TDRE|EIV|DEN|RRE|_EX|EDIT|DRE|TEX|EDI|ETY|ELOG|DRE|VEX|EDI|ETE|TTE|TTREQVTO_SEND_RCVD _ ___ _ _ _ _ _ __ _ _ __ _ _ _ _ _ _ _ _ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | CPI COMMUNICATIONS CALLS | | | | | | | | | | | | | | | | | | | | | | +----------------------------------------+----+---+---+---+---+----+---+---+---+---+----+---+---+---+---+----+---+---+---+---+---+ | STARTER SET | | | | | | | | | | | | | | | | | | | | | | +----------------------------------------+----+---+---+---+---+----+---+---+---+---+----+---+---+---+---+----+---+---+---+---+---+ | Accept_Conversation | | D | | | | | | | | | | | | | | D | | | | | | +----------------------------------------+----+---+---+---+---+----+---+---+---+---+----+---+---+---+---+----+---+---+---+---+---+ | Allocate | | | | | | | | | | | | | | | | | | | | | | +----------------------------------------+----+---+---+---+---+----+---+---+---+---+----+---+---+---+---+----+---+---+---+---+---+ | Deallocate | | | | | | | | | | | | | | | | | | | | | | +----------------------------------------+----+---+---+---+---+----+---+---+---+---+----+---+---+---+---+----+---+---+---+---+---+ | Initialize_Conversation | | D | | | | | | | | | | | | | | D | | | | | | +----------------------------------------+----+---+---+---+---+----+---+---+---+---+----+---+---+---+---+----+---+---+---+---+---+ | Receive | X | | X | X | X | | | | | | | | | | | | | | | | | +----------------------------------------+----+---+---+---+---+----+---+---+---+---+----+---+---+---+---+----+---+---+---+---+---+ | Send_Data | | | | | | | X | | X | X | | | | | | | | | | | | +----------------------------------------+----+---+---+---+---+----+---+---+---+---+----+---+---+---+---+----+---+---+---+---+---+ | ADVANCED FUNCTION | | | | | | | | | | | | | | | | | | | | | | +----------------------------------------+----+---+---+---+---+----+---+---+---+---+----+---+---+---+---+----+---+---+---+---+---+ | Accept_Incoming | | | | | | | | | | | | | | | | | | | | | | +----------------------------------------+----+---+---+---+---+----+---+---+---+---+----+---+---+---+---+----+---+---+---+---+---+ | Cancel_Conversation | | | | | | | | | | | | | | | | | | | | | | +----------------------------------------+----+---+---+---+---+----+---+---+---+---+----+---+---+---+---+----+---+---+---+---+---+ | Confirm | | | | | | | | | | | | | | | | | | | | | | +----------------------------------------+----+---+---+---+---+----+---+---+---+---+----+---+---+---+---+----+---+---+---+---+---+ | Confirmed | | | | | | | | | | | | | | | | | | | | | | +----------------------------------------+----+---+---+---+---+----+---+---+---+---+----+---+---+---+---+----+---+---+---+---+---+ | Extract_Conversation_State | | | | | | | | | | | | | | | | | | | | | | +----------------------------------------+----+---+---+---+---+----+---+---+---+---+----+---+---+---+---+----+---+---+---+---+---+ | Extract_Conversation_Type | | | | | | | | | | | | | | | | | | | | | | +----------------------------------------+----+---+---+---+---+----+---+---+---+---+----+---+---+---+---+----+---+---+---+---+---+ | Extract_Mode_Name | | | | | | | | | | | | | | | | | | | | | | +----------------------------------------+----+---+---+---+---+----+---+---+---+---+----+---+---+---+---+----+---+---+---+---+---+ | Extract_Partner_LU_Name | | | | | | | | | | | | | | | | | | | | | | +----------------------------------------+----+---+---+---+---+----+---+---+---+---+----+---+---+---+---+----+---+---+---+---+---+ | Extract_Security_User_ID | | | | | | | | | | | | | | | | | | | | | | +----------------------------------------+----+---+---+---+---+----+---+---+---+---+----+---+---+---+---+----+---+---+---+---+---+ | Extract_Send_Receive_Mode | | | | | | | | | | | | | | | | | | | | | | +----------------------------------------+----+---+---+---+---+----+---+---+---+---+----+---+---+---+---+----+---+---+---+---+---+ | Extract_Sync_Level | | | | | | | | | | | | | | | | | | | | | | +----------------------------------------+----+---+---+---+---+----+---+---+---+---+----+---+---+---+---+----+---+---+---+---+---+ | Extract_TP_Name | | | | | | | | | | | | | | | | | | | | | | +----------------------------------------+----+---+---+---+---+----+---+---+---+---+----+---+---+---+---+----+---+---+---+---+---+ | Flush | | | | | | | | | | | | | | | | | | | | | | +----------------------------------------+----+---+---+---+---+----+---+---+---+---+----+---+---+---+---+----+---+---+---+---+---+ | Initialize_For_Incoming | | D | | | | | | | | | | | | | | D | | | | | | +----------------------------------------+----+---+---+---+---+----+---+---+---+---+----+---+---+---+---+----+---+---+---+---+---+ | Prepare | | | | | | | | | | | | | | | | | | | | | | +----------------------------------------+----+---+---+---+---+----+---+---+---+---+----+---+---+---+---+----+---+---+---+---+---+ | Prepare_To_Receive | | | | | | | | | | | | | | | | | | | | | | +----------------------------------------+----+---+---+---+---+----+---+---+---+---+----+---+---+---+---+----+---+---+---+---+---+ | Receive_Expedited_Data | | | | | | | | | | | | | | | | | | | | | | +----------------------------------------+----+---+---+---+---+----+---+---+---+---+----+---+---+---+---+----+---+---+---+---+---+ | Request_To_Send | | | | | | X | | | | | | | | | | | | | | | | +----------------------------------------+----+---+---+---+---+----+---+---+---+---+----+---+---+---+---+----+---+---+---+---+---+ | Send_Error | | | | | | | | | | | | | | X | D | | X | X | | | | +----------------------------------------+----+---+---+---+---+----+---+---+---+---+----+---+---+---+---+----+---+---+---+---+---+ | Send_Expedited_Data | | | | | | | | | | | X | X | X | | | | | | | | | +----------------------------------------+----+---+---+---+---+----+---+---+---+---+----+---+---+---+---+----+---+---+---+---+---+ | Set_Confirmation_Urgency | | | | | | | | | | | | | | | | | | | | | | +----------------------------------------+----+---+---+---+---+----+---+---+---+---+----+---+---+---+---+----+---+---+---+---+---+ | Set_Conversation_Security_Password | | | | | | | | | | | | | | | | | | | | | | +----------------------------------------+----+---+---+---+---+----+---+---+---+---+----+---+---+---+---+----+---+---+---+---+---+ | Set_Conversation_Security_Type | | | | | | | | | | | | | | | | | | | | | | +----------------------------------------+----+---+---+---+---+----+---+---+---+---+----+---+---+---+---+----+---+---+---+---+---+ | Set_Conversation_Security_User_ID | | | | | | | | | | | | | | | | | | | | | | +----------------------------------------+----+---+---+---+---+----+---+---+---+---+----+---+---+---+---+----+---+---+---+---+---+ | Set_Conversation_Type | | | | | | | | | | | | | | | | | | | | | | +----------------------------------------+----+---+---+---+---+----+---+---+---+---+----+---+---+---+---+----+---+---+---+---+---+ | Set_Deallocate_Type | | | | | | | | | | | | | | | | | | | | | | +----------------------------------------+----+---+---+---+---+----+---+---+---+---+----+---+---+---+---+----+---+---+---+---+---+ | Set_Error_Direction | | | | | | | | | | | | | | X | | | | | | | | +----------------------------------------+----+---+---+---+---+----+---+---+---+---+----+---+---+---+---+----+---+---+---+---+---+ | Set_Fill | X | S | | | | | | | | | | | | | | | | | | | | +----------------------------------------+----+---+---+---+---+----+---+---+---+---+----+---+---+---+---+----+---+---+---+---+---+ | Set_Initialization_Data | | | | | | | | | | | | | | | | | | | | | | +----------------------------------------+----+---+---+---+---+----+---+---+---+---+----+---+---+---+---+----+---+---+---+---+---+ | Set_Log_Data | | | | | | | | | | | | | | X | | S | | | | | | +----------------------------------------+----+---+---+---+---+----+---+---+---+---+----+---+---+---+---+----+---+---+---+---+---+ | Set_Mode_Name | | | | | | | | | | | | | | | | | | | | | | +----------------------------------------+----+---+---+---+---+----+---+---+---+---+----+---+---+---+---+----+---+---+---+---+---+ | Set_Partner_LU_Name | | | | | | | | | | | | | | | | | | | | | | +----------------------------------------+----+---+---+---+---+----+---+---+---+---+----+---+---+---+---+----+---+---+---+---+---+ | Set_Prepare_To_Receive_Type | | | | | | | | | | | | | | | | | | | | | | +----------------------------------------+----+---+---+---+---+----+---+---+---+---+----+---+---+---+---+----+---+---+---+---+---+ | Set_Receive_Type | X | | | | | | | | | | | | | | | | | | | | | +----------------------------------------+----+---+---+---+---+----+---+---+---+---+----+---+---+---+---+----+---+---+---+---+---+ | Set_Return_Control | | | | | | | | | | | | | | | | | | | | | | +----------------------------------------+----+---+---+---+---+----+---+---+---+---+----+---+---+---+---+----+---+---+---+---+---+ | Set_Send_Receive_Mode | | | | | | | | | | | | | | | | | | | | | | +----------------------------------------+----+---+---+---+---+----+---+---+---+---+----+---+---+---+---+----+---+---+---+---+---+ | Set_Send_Type | | | | | | | | | | | | | | | | | | | | | | +----------------------------------------+----+---+---+---+---+----+---+---+---+---+----+---+---+---+---+----+---+---+---+---+---+ | Set_Sync_Level | | | | | | | | | | | | | | | | | | | | | | +----------------------------------------+----+---+---+---+---+----+---+---+---+---+----+---+---+---+---+----+---+---+---+---+---+ | Set_TP_Name | | | | | | | | | | | | | | | | | | | | | | +----------------------------------------+----+---+---+---+---+----+---+---+---+---+----+---+---+---+---+----+---+---+---+---+---+ | Test_Request_To_Send_Received | | | | | | | | | | | | | | | | | | | X | | X | +----------------------------------------+----+---+---+---+---+----+---+---+---+---+----+---+---+---+---+----+---+---+---+---+---+ ---------------------------------------------------------------- CPI Communications and OSI TP CRMs for Half-Duplex Conversations This section summarizes the CPI-C application service element (ASE) services, maps the services both to and from the OSI TP services, and defines the sequencing rules and state table for CPI-C use by OSI TP programs using half-duplex (HDX) conversations. The CPI Communications calls have been mapped to the OSI TP services described in ISO/IEC 10026-2, Information Technology -- Open Systems Interconnection -- Distributed Transaction Processing -- Part 2: OSI TP Service Definition. Programs written using CPI Communications can communicate with OSI TP programs. Two sets of tables beginning with Table 41 on page 2 and Table 56 show the functional relationships between OSI TP services and CPI Communications calls. Use these tables to determine how the function of a particular OSI TP service is provided through CPI Communications for half-duplex conversations. This section is intended for programmers who are familiar with OSI TP. Summary of CPI-C ASE Services The CPI-C ASE services are defined in Chapter 4, "Call Reference Section" on page 1. Mapping CPI-C to OSI TP Services The following tables present the complete mapping from the CPI-C calls to the OSI TP services. Some of the CPI-C calls provide local services only (such as CMSST, Set_Send_Type), and are not included in these tables. However, the effect of these calls can be determined from this mapping. The following conventions are used within the tables in this section: * The parameter is not directly supported by CPI-C. =XXX The value "xxx" is always used. N/A The value is not applicable in this case. +--------------------------------------------------------------------------------------------------------------------------------+ | Table 41. Mapping CPI-C Calls to OSI TP Services | +----------------------------------------------------------+---------------------------------------------------------------------+ | CPI-C CALL | OSI TP SERVICE | +----------------------------------------------------------+---------------------------------------------------------------------+ | CMALLC - Allocate | TP-BEGIN-DIALOGUE request | | (See Table 42 for details.) | | +----------------------------------------------------------+---------------------------------------------------------------------+ | CMCANC - Cancel_Conversation | TP-BEGIN-DIALOGUE response | | (See Table 43 for details.) | TP-U-ABORT request | +----------------------------------------------------------+---------------------------------------------------------------------+ | CMCFM - Confirm | TP-BEGIN-DIALOGUE response | | (See Table 44 for details.) | TP-BEGIN-TRANSACTION request | | | TP-HANDSHAKE request | | | TP-HANDSHAKE-AND-GRANT-CONTROL request | +----------------------------------------------------------+---------------------------------------------------------------------+ | CMCFMD - Confirmed | TP-HANDSHAKE response | | (See Table 45 for details.) | TP-HANDSHAKE-AND-GRANT-CONTROL response | | | TP-END-DIALOGUE response | +----------------------------------------------------------+---------------------------------------------------------------------+ | CMDEAL - Deallocate | TP-BEGIN-DIALOGUE response | | (See Table 46 for details.) | TP-END-DIALOGUE request | | | TP-DEFERRED-END-DIALOGUE request | | | TP-U-ABORT request | +----------------------------------------------------------+---------------------------------------------------------------------+ | CMDFDE - Deferred_Deallocate | TP-DEFERRED-END-DIALOGUE request | | (See Table 47 for details.) | | +----------------------------------------------------------+---------------------------------------------------------------------+ | CMFLUS - Flush | TP-GRANT-CONTROL request | | (See Table 48 for details.) | | +----------------------------------------------------------+---------------------------------------------------------------------+ | CMINCL - Include_Partner_In_Transaction | TP-BEGIN-TRANSACTION request | | (See Table 49 for details.) | | +----------------------------------------------------------+---------------------------------------------------------------------+ | CMPREP - Prepare | TP-BEGIN-TRANSACTION request | | (See Table 50 for details.) | TP-PREPARE request | +----------------------------------------------------------+---------------------------------------------------------------------+ | CMPTR - Prepare_to_Receive | TP-BEGIN-TRANSACTION request | | (See Table 51 for details.) | TP-GRANT-CONTROL request | | | TP-HANDSHAKE-AND-GRANT-CONTROL request | | | TP-DEFERRED-GRANT-CONTROL request | +----------------------------------------------------------+---------------------------------------------------------------------+ | CMRTS - Request_to_Send | TP-REQUEST-CONTROL request | | (See Table 52 for details.) | | +----------------------------------------------------------+---------------------------------------------------------------------+ | CMRCV - Receive | TP-BEGIN-DIALOGUE response | | (See Table 53 for details.) | TP-BEGIN-TRANSACTION request | | | TP-GRANT-CONTROL request | +----------------------------------------------------------+---------------------------------------------------------------------+ | CMSEND - Send_Data | TP-BEGIN-DIALOGUE response | | (See Table 54 for details.) | TP-BEGIN-TRANSACTION request | | | (TP-DATA request) UD-TRANSFER request | | | TP-HANDSHAKE request | | | TP-GRANT-CONTROL request | | | TP-HANDSHAKE-AND-GRANT-CONTROL request | | | TP-DEFERRED-GRANT-CONTROL request | | | TP-END-DIALOGUE request | | | TP-DEFERRED-END-DIALOGUE request | | | TP-U-ABORT request | +----------------------------------------------------------+---------------------------------------------------------------------+ | CMSERR - Send_Error | TP-BEGIN-DIALOGUE response | | (See Table 55 for details.) | TP-BEGIN-TRANSACTION request | | | TP-U-ERROR request | +----------------------------------------------------------+---------------------------------------------------------------------+ The following OSI TP services are not directly mapped to the CPI-C calls: TP-COMMIT REQUEST is supported through a resource recovery interface. TP-DONE REQUEST is not externalized to the application program. TP-ROLLBACK REQUEST is supported through a resource recovery interface. +--------------------------------------------------------------------------------------------------------------------------------+ | Table 42. CMALLC - Allocate Mapping | +----------------------------------------------------------+---------------------------------------------------------------------+ | CPI-C CALL | OSI TP SERVICE | | PARAMETERS AND CONVERSATION CHARACTERISTICS | PARAMETERS | +----------------------------------------------------------+---------------------------------------------------------------------+ | IF: sync_level = CM_NONE | +----------------------------------------------------------+---------------------------------------------------------------------+ | CMALLC - Allocate | TP-BEGIN-DIALOGUE request | | * | Initiating-TPSU-Title | | AP_title (characteristic) | Recipient-AP-Title | | * | Recipient-API-Identifier | | AE_qualifier (characteristic) | Recipient-AE-Qualifier | | * | Recipient-AEI-Identifier | | TP_name (characteristic) | Recipient-TPSU-Title | | =Dialogue and Polarized | Functional-Units | | mode_name (characteristic) | Quality-of-Service | | application_context_name (characteristic) | Application-Context-Name | | n/a | Begin-Transaction | | allocate_confirm (characteristic) | Confirmation | | initialization_data (characteristic) | User-Data | | | | | | | | | | +----------------------------------------------------------+---------------------------------------------------------------------+ +----------------------------------------------------------+---------------------------------------------------------------------+ | IF: sync_level = CM_CONFIRM | +----------------------------------------------------------+---------------------------------------------------------------------+ | CMALLC - Allocate | TP-BEGIN-DIALOGUE request | | * | Initiating-TPSU-Title | | AP_title (characteristic) | Recipient-AP-Title | | * | Recipient-API-Identifier | | AE_qualifier (characteristic) | Recipient-AE-Qualifier | | * | Recipient-AEI-Identifier | | TP_name (characteristic) | Recipient-TPSU-Title | | =Dialogue, Polarized, and Handshake | Functional-Units | | mode_name (characteristic) | Quality-of-Service | | application_context_name (characteristic) | Application-Context-Name | | n/a | Begin-Transaction | | allocate_confirm (characteristic) | Confirmation | | initialization_data (characteristic) | User-Data | +----------------------------------------------------------+---------------------------------------------------------------------+ +----------------------------------------------------------+---------------------------------------------------------------------+ | IF: sync_level = CM_SYNC_POINT | | AND transaction_control = CM_CHAINED_TRANSACTIONS | +----------------------------------------------------------+---------------------------------------------------------------------+ | CMALLC - Allocate | TP-BEGIN-DIALOGUE request | | * | Initiating-TPSU-Title | | AP_title (characteristic) | Recipient-AP-Title | | * | Recipient-API-Identifier | | AE_qualifier (characteristic) | Recipient-AE-Qualifier | | * | Recipient-AEI-Identifier | | TP_name (characteristic) | Recipient-TPSU-Title | | =Dialogue, Polarized, Handshake, | Functional-Units | | Commit, and Chained Transactions | | | mode_name (characteristic) | Quality-of-Service | | application_context_name (characteristic) | Application-Context-Name | | n/a | Begin-Transaction | | allocate_confirm (characteristic) | Confirmation | | initialization_data (characteristic) | User-Data | +----------------------------------------------------------+---------------------------------------------------------------------+ +----------------------------------------------------------+---------------------------------------------------------------------+ | IF: sync_level = CM_SYNC_POINT | | AND transaction_control = CM_UNCHAINED_TRANSACTIONS | +----------------------------------------------------------+---------------------------------------------------------------------+ | CMALLC - Allocate | TP-BEGIN-DIALOGUE request | | * | Initiating-TPSU-Title | | AP_title (characteristic) | Recipient-AP-Title | | * | Recipient-API-Identifier | | AE_qualifier (characteristic) | Recipient-AE-Qualifier | | * | Recipient-AEI-Identifier | | TP_name (characteristic) | Recipient-TPSU-Title | | =Dialogue, Polarized, Handshake, | Functional-Units | | Commit, and Unchained Transactions | | | mode_name (characteristic) | Quality-of-Service | | application_context_name (characteristic) | Application-Context-Name | | begin_transaction (characteristic) | Begin-Transaction | | | (See note at end of table.) | | allocate_confirm (characteristic) | Confirmation | | initialization_data (characteristic) | User-Data | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | +----------------------------------------------------------+---------------------------------------------------------------------+ +----------------------------------------------------------+---------------------------------------------------------------------+ | IF: sync_level = CM_SYNC_POINT_NO_CONFIRM | | AND transaction_control = CM_CHAINED_TRANSACTIONS | +----------------------------------------------------------+---------------------------------------------------------------------+ | CMALLC - Allocate | TP-BEGIN-DIALOGUE request | | * | Initiating-TPSU-Title | | AP_title (characteristic) | Recipient-AP-Title | | * | Recipient-API-Identifier | | AE_qualifier (characteristic) | Recipient-AE-Qualifier | | * | Recipient-AEI-Identifier | | TP_name (characteristic) | Recipient-TPSU-Title | | =Dialogue, Polarized, Commit, | Functional-Units | | and Chained Transactions | | | mode_name (characteristic) | Quality-of-Service | | application_context_name (characteristic) | Application-Context-Name | | n/a | Begin-Transaction | | allocate_confirm (characteristic) | Confirmation | | initialization_data (characteristic) | User-Data | +----------------------------------------------------------+---------------------------------------------------------------------+ +----------------------------------------------------------+---------------------------------------------------------------------+ | IF: sync_level = CM_SYNC_POINT_NO_CONFIRM | | AND transaction_control = CM_UNCHAINED_TRANSACTIONS | +----------------------------------------------------------+---------------------------------------------------------------------+ | CMALLC - Allocate | TP-BEGIN-DIALOGUE request | | * | Initiating-TPSU-Title | | AP_title (characteristic) | Recipient-AP-Title | | * | Recipient-API-Identifier | | AE_qualifier (characteristic) | Recipient-AE-Qualifier | | * | Recipient-AEI-Identifier | | TP_name (characteristic) | Recipient-TPSU-Title | | =Dialogue, Polarized, Commit, | Functional-Units | | and Unchained Transactions | | | mode_name (characteristic) | Quality-of-Service | | application_context_name (characteristic) | Application-Context-Name | | begin_transaction (characteristic) | Begin-Transaction | | | (See note at end of table.) | | allocate_confirm (characteristic) | Confirmation | | initialization_data (characteristic) | User-Data | +----------------------------------------------------------+---------------------------------------------------------------------+ | NOTE: IF begin_transaction = CM_BEGIN_IMPLICIT | | AND transaction_control = CM_UNCHAINED_TRANSACTIONS | | AND the conversation's context is in transaction | | THEN Begin-Transaction is set to true; | | otherwise, Begin-Transaction is set to false. | +--------------------------------------------------------------------------------------------------------------------------------+ +--------------------------------------------------------------------------------------------------------------------------------+ | Table 43. CMCANC - Cancel_Conversation Mapping | +----------------------------------------------------------+---------------------------------------------------------------------+ | CPI-C CALL | OSI TP SERVICE | | PARAMETERS AND CONVERSATION CHARACTERISTICS | PARAMETERS | +----------------------------------------------------------+---------------------------------------------------------------------+ | IF: Confirmation = true on TP-BEGIN-DIALOGUE indication | | AND it is the first activity on the conversation following Accept_Conversation or Accept_Incoming | +----------------------------------------------------------+---------------------------------------------------------------------+ | CMCANC - Cancel_Conversation | TP-BEGIN-DIALOGUE response | | = rejected(user) | Result | | initialization_data (characteristic) | User-Data | +----------------------------------------------------------+---------------------------------------------------------------------+ +----------------------------------------------------------+---------------------------------------------------------------------+ | OTHERWISE: | +----------------------------------------------------------+---------------------------------------------------------------------+ | CMCANC - Cancel_Conversation | TP-U-ABORT request | | =null | User-Data | +----------------------------------------------------------+---------------------------------------------------------------------+ +--------------------------------------------------------------------------------------------------------------------------------+ | Table 44. CMCFM - Confirm Mapping | +----------------------------------------------------------+---------------------------------------------------------------------+ | CPI-C CALL | OSI TP SERVICE | | PARAMETERS AND CONVERSATION CHARACTERISTICS | PARAMETERS | +----------------------------------------------------------+---------------------------------------------------------------------+ +----------------------------------------------------------+---------------------------------------------------------------------+ | IF: sync_level = CM_SYNC_POINT | | AND transaction_control = CM_UNCHAINED_TRANSACTIONS | | AND begin_transaction = CM_BEGIN_IMPLICIT | | AND it is the first activity on the conversation following the start of the current transaction | +----------------------------------------------------------+---------------------------------------------------------------------+ | CMCFM - Confirm | TP-BEGIN-TRANSACTION request | | | (no parameters) | | | TP-HANDSHAKE request | | confirmation_urgency (characteristic) | Confirmation-Urgency | +----------------------------------------------------------+---------------------------------------------------------------------+ +----------------------------------------------------------+---------------------------------------------------------------------+ | IF: sync_level = CM_SYNC_POINT | | AND the previous operation on the conversation was a Prepare_To_Receive with prepare_to_receive_type = | | CM_PREP_TO_RECEIVE_SYNC_LEVEL | +----------------------------------------------------------+---------------------------------------------------------------------+ | CMCFM - Confirm | TP-HANDSHAKE-AND-GRANT-CONTROL request | | | (no parameters) | +----------------------------------------------------------+---------------------------------------------------------------------+ +----------------------------------------------------------+---------------------------------------------------------------------+ | IF: sync_level = CM_CONFIRM or sync_level = CM_SYNC_POINT | +----------------------------------------------------------+---------------------------------------------------------------------+ | CMCFM - Confirm | TP-HANDSHAKE request | | confirmation_urgency (characteristic) | Confirmation-Urgency | +----------------------------------------------------------+---------------------------------------------------------------------+ +--------------------------------------------------------------------------------------------------------------------------------+ | Table 45. CMCFMD - Confirmed Mapping | +----------------------------------------------------------+---------------------------------------------------------------------+ | CPI-C CALL | OSI TP SERVICE | | PARAMETERS AND CONVERSATION CHARACTERISTICS | PARAMETERS | +----------------------------------------------------------+---------------------------------------------------------------------+ | IF IN RESPONSE TO: status_received = CM_CONFIRM_RECEIVED | +----------------------------------------------------------+---------------------------------------------------------------------+ | CMCFMD - Confirmed | TP-HANDSHAKE response | | | (no parameters) | +----------------------------------------------------------+---------------------------------------------------------------------+ +----------------------------------------------------------+---------------------------------------------------------------------+ | IF IN RESPONSE TO: status_received = CM_CONFIRM_SEND_RECEIVED | +----------------------------------------------------------+---------------------------------------------------------------------+ | CMCFMD - Confirmed | TP-HANDSHAKE_AND-GRANT-CONTROL response | | | (no parameters) | +----------------------------------------------------------+---------------------------------------------------------------------+ +----------------------------------------------------------+---------------------------------------------------------------------+ | IF IN RESPONSE TO: status_received = CM_CONFIRM_DEALLOC_RECEIVED | +----------------------------------------------------------+---------------------------------------------------------------------+ | CMCFMD - Confirmed | TP-END-DIALOGUE response | | | (no parameters) | +----------------------------------------------------------+---------------------------------------------------------------------+ +--------------------------------------------------------------------------------------------------------------------------------+ | Table 46. CMDEAL - Deallocate Mapping | +----------------------------------------------------------+---------------------------------------------------------------------+ | CPI-C CALL | OSI TP SERVICE | | PARAMETERS AND CONVERSATION CHARACTERISTICS | PARAMETERS | +----------------------------------------------------------+---------------------------------------------------------------------+ | IF: deallocate_type = CM_DEALLOCATE_SYNC_LEVEL | | AND sync_level = CM_NONE | +----------------------------------------------------------+---------------------------------------------------------------------+ | CMDEAL - Deallocate | (See note at end of table.) | | | TP-END-DIALOGUE request | | =false | Confirmation | +----------------------------------------------------------+---------------------------------------------------------------------+ +----------------------------------------------------------+---------------------------------------------------------------------+ | IF: deallocate_type = CM_DEALLOCATE_SYNC_LEVEL | | AND sync_level = CM_CONFIRM | +----------------------------------------------------------+---------------------------------------------------------------------+ | CMDEAL - Deallocate | (See note at end of table.) | | | TP-END-DIALOGUE request | | =true | Confirmation | +----------------------------------------------------------+---------------------------------------------------------------------+ +----------------------------------------------------------+---------------------------------------------------------------------+ | IF: deallocate_type = CM_DEALLOCATE_SYNC_LEVEL | | AND (sync_level = CM_SYNC_POINT or sync_level = CM_SYNC_POINT_NO_CONFIRM) | | AND (transaction_control = CM_CHAINED_TRANSACTIONS or (transaction_control = CM_UNCHAINED_TRANSACTIONS and the conversation is | | included in the current transaction)) | +----------------------------------------------------------+---------------------------------------------------------------------+ | CMDEAL - Deallocate | (See note at end of table.) | | | TP-DEFERRED-END-DIALOGUE request | | | (no parameters) | +----------------------------------------------------------+---------------------------------------------------------------------+ +----------------------------------------------------------+---------------------------------------------------------------------+ | IF: deallocate_type = CM_DEALLOCATE_SYNC_LEVEL | | AND sync_level = CM_SYNC_POINT | | AND (transaction_control = CM_UNCHAINED_TRANSACTIONS and the conversation is not currently included in the transaction) | +----------------------------------------------------------+---------------------------------------------------------------------+ | CMDEAL - Deallocate | (See note at end of table.) | | | TP-END-DIALOGUE request | | =true | Confirmation | +----------------------------------------------------------+---------------------------------------------------------------------+ +----------------------------------------------------------+---------------------------------------------------------------------+ | IF: deallocate_type = CM_DEALLOCATE_SYNC_LEVEL | | AND sync_level = CM_SYNC_POINT_NO_CONFIRM | | AND (transaction_control = CM_UNCHAINED_TRANSACTIONS and the conversation is not currently included in the transaction) | +----------------------------------------------------------+---------------------------------------------------------------------+ | CMDEAL - Deallocate | (See note at end of table.) | | | TP-END-DIALOGUE request | | =false | Confirmation | +----------------------------------------------------------+---------------------------------------------------------------------+ +----------------------------------------------------------+---------------------------------------------------------------------+ | IF: deallocate_type = CM_DEALLOCATE_FLUSH | +----------------------------------------------------------+---------------------------------------------------------------------+ | CMDEAL - Deallocate | (See note at end of table.) | | | TP-END-DIALOGUE request | | =false | Confirmation | +----------------------------------------------------------+---------------------------------------------------------------------+ +----------------------------------------------------------+---------------------------------------------------------------------+ | IF: deallocate_type = CM_DEALLOCATE_CONFIRM | +----------------------------------------------------------+---------------------------------------------------------------------+ | CMDEAL - Deallocate | (See note at end of table.) | | | TP-END-DIALOGUE request | | =true | Confirmation | +----------------------------------------------------------+---------------------------------------------------------------------+ +----------------------------------------------------------+---------------------------------------------------------------------+ | IF: deallocate_type = CM_DEALLOCATE_ABEND | | AND it is the first activity on the conversation following Accept_Conversation or Accept_Incoming | +----------------------------------------------------------+---------------------------------------------------------------------+ | CMDEAL - Deallocate | TP-BEGIN-DIALOGUE response | | =rejected(user) | Result | | initialization_data (characteristic) | User-Data | +----------------------------------------------------------+---------------------------------------------------------------------+ +----------------------------------------------------------+---------------------------------------------------------------------+ | IF: deallocate_type = CM_DEALLOCATE_ABEND | | AND it is not the first activity on the conversation following Accept_Conversation or Accept_Incoming | +----------------------------------------------------------+---------------------------------------------------------------------+ | CMDEAL - Deallocate | TP-U-ABORT request | | log_data (characteristic) | User-Data | +----------------------------------------------------------+---------------------------------------------------------------------+ | NOTE: IF Confirmation = true on TP-BEGIN-DIALOGUE indication | | AND it is the first activity on the conversation following Accept_Conversation or Accept_Incoming | | THEN the identified OSI TP Service primitives will be preceded by TP-BEGIN-DIALOGUE response (Result = accepted and User-Data | | = initialization_data (characteristic)). | +--------------------------------------------------------------------------------------------------------------------------------+ +--------------------------------------------------------------------------------------------------------------------------------+ | Table 47. CMDFDE - Deferred_Deallocate Mapping | +----------------------------------------------------------+---------------------------------------------------------------------+ | CPI-C CALL | OSI TP SERVICE | | PARAMETERS AND CONVERSATION CHARACTERISTICS | PARAMETERS | +----------------------------------------------------------+---------------------------------------------------------------------+ | CMDFDE - Deferred_Deallocate | TP-DEFERRED-END-DIALOGUE request | | | (no parameters) | +----------------------------------------------------------+---------------------------------------------------------------------+ +--------------------------------------------------------------------------------------------------------------------------------+ | Table 48. CMFLUS - Flush | +----------------------------------------------------------+---------------------------------------------------------------------+ | CPI-C CALL | OSI TP SERVICE | | PARAMETERS AND CONVERSATION CHARACTERISTICS | PARAMETERS | +----------------------------------------------------------+---------------------------------------------------------------------+ +----------------------------------------------------------+---------------------------------------------------------------------+ | IF: the previous operation on the conversation was a Prepare_To_Receive with prepare_to_receive_type = | | CM_PREP_TO_RECEIVE_SYNC_LEVEL | +----------------------------------------------------------+---------------------------------------------------------------------+ | CMFLUS - Flush | TP-GRANT-CONTROL request | | | (no parameters) | +----------------------------------------------------------+---------------------------------------------------------------------+ +--------------------------------------------------------------------------------------------------------------------------------+ | Table 49. CMINCL - Include_Partner_In_Transaction Mapping | +----------------------------------------------------------+---------------------------------------------------------------------+ | CPI-C CALL | OSI TP SERVICE | | PARAMETERS AND CONVERSATION CHARACTERISTICS | PARAMETERS | +----------------------------------------------------------+---------------------------------------------------------------------+ | CMINCL - Include_Partner_In_Transaction | TP-BEGIN-TRANSACTION request | | | (no parameters) | +----------------------------------------------------------+---------------------------------------------------------------------+ +--------------------------------------------------------------------------------------------------------------------------------+ | Table 50. CMPREP - Prepare Mapping | +----------------------------------------------------------+---------------------------------------------------------------------+ | CPI-C CALL | OSI TP SERVICE | | PARAMETERS AND CONVERSATION CHARACTERISTICS | PARAMETERS | +----------------------------------------------------------+---------------------------------------------------------------------+ | IF: sync_level = CM_SYNC_POINT or sync_level = CM_SYNC_POINT_NO_CONFIRM | | AND transaction_control = CM_UNCHAINED_TRANSACTIONS | | AND begin_transaction = CM_BEGIN_IMPLICIT | | AND it is the first activity on the conversation following the start of the current transaction | +----------------------------------------------------------+---------------------------------------------------------------------+ | CMPREP - Prepare | TP-BEGIN-TRANSACTION request | | | (no parameters) | | | TP-PREPARE request | | prepare_data_permitted (characteristic) | Data-Permitted | +----------------------------------------------------------+---------------------------------------------------------------------+ +----------------------------------------------------------+---------------------------------------------------------------------+ | IF: sync_level = CM_SYNC_POINT or sync_level = CM_SYNC_POINT_NO_CONFIRM | | AND the previous operation on the conversation was a Prepare_To_Receive with prepare_to_receive_type = | | CM_PREP_TO_RECEIVE_SYNC_LEVEL | +----------------------------------------------------------+---------------------------------------------------------------------+ | CMPREP - Prepare | TP-DEFERRED-GRANT-CONTROL request | | | (no parameters) | | | TP-PREPARE request | | prepare_data_permitted (characteristic) | Data-Permitted | | | | +----------------------------------------------------------+---------------------------------------------------------------------+ +----------------------------------------------------------+---------------------------------------------------------------------+ | IF: sync_level = CM_SYNC_POINT or sync_level = CM_SYNC_POINT_NO_CONFIRM | +----------------------------------------------------------+---------------------------------------------------------------------+ | CMPREP - Prepare | TP-PREPARE request | | prepare_data_permitted (characteristic) | Data-Permitted | +----------------------------------------------------------+---------------------------------------------------------------------+ +--------------------------------------------------------------------------------------------------------------------------------+ | Table 51. CMPTR - Prepare_To_Receive Mapping | +----------------------------------------------------------+---------------------------------------------------------------------+ | CPI-C CALL | OSI TP SERVICE | | PARAMETERS AND CONVERSATION CHARACTERISTICS | PARAMETERS | +----------------------------------------------------------+---------------------------------------------------------------------+ | IF: prepare_to_receive_type = CM_PREP_TO_RECEIVE_SYNC_LEVEL | | AND sync_level = CM_NONE | +----------------------------------------------------------+---------------------------------------------------------------------+ | CMPTR - Prepare_To_Receive | TP-GRANT-CONTROL request | | | (no parameters) | +----------------------------------------------------------+---------------------------------------------------------------------+ +----------------------------------------------------------+---------------------------------------------------------------------+ | IF: prepare_to_receive_type = CM_PREP_TO_RECEIVE_SYNC_LEVEL | | AND sync_level = CM_CONFIRM | +----------------------------------------------------------+---------------------------------------------------------------------+ | CMPTR - Prepare_To_Receive | TP-HANDSHAKE-AND-GRANT-CONTROL request | | confirmation_urgency (characteristic) | Confirmation-Urgency | +----------------------------------------------------------+---------------------------------------------------------------------+ +----------------------------------------------------------+---------------------------------------------------------------------+ | IF: prepare_to_receive_type = CM_PREP_TO_RECEIVE_SYNC_LEVEL | | AND sync_level = CM_SYNC_POINT or sync_level = CM_SYNC_POINT_NO_CONFIRM | | AND the conversation is included in the current transaction | +----------------------------------------------------------+---------------------------------------------------------------------+ | CMPTR - Prepare_To_Receive | (See notes 1 and 2 at end of table.) | +----------------------------------------------------------+---------------------------------------------------------------------+ +----------------------------------------------------------+---------------------------------------------------------------------+ | IF: prepare_to_receive_type = CM_PREP_TO_RECEIVE_SYNC_LEVEL | | AND sync_level = CM_SYNC_POINT | | AND (transaction_control = CM_UNCHAINED_TRANSACTIONS and the conversation is not currently included in the transaction) | +----------------------------------------------------------+---------------------------------------------------------------------+ | CMPTR - Prepare_To_Receive | TP-HANDSHAKE-AND-GRANT-CONTROL request | | confirmation_urgency (characteristic) | Confirmation-Urgency | +----------------------------------------------------------+---------------------------------------------------------------------+ +----------------------------------------------------------+---------------------------------------------------------------------+ | IF: prepare_to_receive_type = CM_PREP_TO_RECEIVE_SYNC_LEVEL | | AND sync_level = CM_SYNC_POINT_NO_CONFIRM | | AND (transaction_control = CM_UNCHAINED_TRANSACTIONS and the conversation is not currently included in the transaction) | +----------------------------------------------------------+---------------------------------------------------------------------+ | CMPTR - Prepare_To_Receive | TP-GRANT-CONTROL request | | | (no parameters) | +----------------------------------------------------------+---------------------------------------------------------------------+ +----------------------------------------------------------+---------------------------------------------------------------------+ | IF: prepare_to_receive_type = CM_PREP_TO_RECEIVE_FLUSH | +----------------------------------------------------------+---------------------------------------------------------------------+ | CMPTR - Prepare_To_Receive | (See note 2 at end of table.) | | | TP-GRANT-CONTROL request | | | (no parameters) | +----------------------------------------------------------+---------------------------------------------------------------------+ +----------------------------------------------------------+---------------------------------------------------------------------+ | IF: prepare_to_receive_type = CM_PREP_TO_RECEIVE_CONFIRM | +----------------------------------------------------------+---------------------------------------------------------------------+ | CMPTR - Prepare_To_Receive | (See note 2 at end of table.) | | | TP-HANDSHAKE-AND-GRANT-CONTROL request | | confirmation_urgency (characteristic) | Confirmation-Urgency | +----------------------------------------------------------+---------------------------------------------------------------------+ +----------------------------------------------------------+---------------------------------------------------------------------+ | NOTES: | | | | NOTE 1: | | | | The completion of the mapping of Prepare_To_Receive depends on the following operation on the conversation. If the operation | | is: | | | | o Flush - a TP-GRANT-CONTROL request will be sent | | o Confirm - a TP-HANDSHAKE-AND-GRANT-CONTROL request will be sent | | o a commit call - a TP-DEFERRED-GRANT-CONTROL request will be sent | | o a Prepare call - a TP-DEFERRED-GRANT-CONTROL request will be sent | | | | NOTE 2: | | | | IF: sync_level = CM_SYNC_POINT or sync_level = CM_SYNC_POINT_NO_CONFIRM | | AND transaction_control = CM_UNCHAINED_TRANSACTIONS | | AND begin_transaction = CM_BEGIN_IMPLICIT | | AND the Prepare_To_Receive call is the first activity on the conversation following the start of the current transaction, | | THEN the identified OSI TP Service primitives are preceded by a TP-BEGIN-TRANSACTION request. | +--------------------------------------------------------------------------------------------------------------------------------+ +--------------------------------------------------------------------------------------------------------------------------------+ | Table 52. CMRTS - Request_To_Send Mapping | +----------------------------------------------------------+---------------------------------------------------------------------+ | CPI-C CALL | OSI TP SERVICE | | PARAMETERS AND CONVERSATION CHARACTERISTICS | PARAMETERS | +----------------------------------------------------------+---------------------------------------------------------------------+ | CMRTS - Request_To_Send | TP-REQUEST-CONTROL request | | | (no parameters) | +----------------------------------------------------------+---------------------------------------------------------------------+ +--------------------------------------------------------------------------------------------------------------------------------+ | Table 53. CMRCV - Receive | +----------------------------------------------------------+---------------------------------------------------------------------+ | CPI-C CALL | OSI TP SERVICE | | PARAMETERS AND CONVERSATION CHARACTERISTICS | PARAMETERS | +----------------------------------------------------------+---------------------------------------------------------------------+ | IF: Confirmation = true on TP-BEGIN-DIALOGUE indication | | AND it is the first activity on the conversation following Accept_Conversation or Accept_Incoming | +----------------------------------------------------------+---------------------------------------------------------------------+ | CMRCV - Receive | TP-BEGIN-DIALOGUE response | | = accepted | Result | | initialization_data (characteristic) | User-Data | +----------------------------------------------------------+---------------------------------------------------------------------+ +----------------------------------------------------------+---------------------------------------------------------------------+ | IF: conversation_state = CM_SEND_STATE or CM_SEND_PENDING_STATE | | AND sync_level = CM_SYNC_POINT or sync_level = CM_SYNC_POINT_NO_CONFIRM | | AND transaction_control = CM_UNCHAINED_TRANSACTIONS | | AND begin_transaction = CM_BEGIN_IMPLICIT | | AND it is the first activity on the conversation following the start of the current transaction | +----------------------------------------------------------+---------------------------------------------------------------------+ | CMRCV - Receive | TP-BEGIN-TRANSACTION request | | | (no parameters) | | | TP-GRANT-CONTROL request | | | (no parameters) | +----------------------------------------------------------+---------------------------------------------------------------------+ +----------------------------------------------------------+---------------------------------------------------------------------+ | IF: conversation_state = CM_SEND_STATE or CM_SEND_PENDING_STATE | +----------------------------------------------------------+---------------------------------------------------------------------+ | CMRCV - Receive | TP-GRANT-CONTROL request | | | (no parameters) | +----------------------------------------------------------+---------------------------------------------------------------------+ +--------------------------------------------------------------------------------------------------------------------------------+ | Table 54. CMSEND - Send_Data Mapping | +----------------------------------------------------------+---------------------------------------------------------------------+ | CPI-C CALL | OSI TP SERVICE | | PARAMETERS AND CONVERSATION CHARACTERISTICS | PARAMETERS | +----------------------------------------------------------+---------------------------------------------------------------------+ | IF: send_type = CM_BUFFER_DATA | +----------------------------------------------------------+---------------------------------------------------------------------+ | CMSEND - Send_Data | (See note at end of table.) | | | (TP-DATA request) UD-TRANSFER request | | buffer (parameter) | User-Data | +----------------------------------------------------------+---------------------------------------------------------------------+ +----------------------------------------------------------+---------------------------------------------------------------------+ | IF: send_type = CM_SEND_AND_FLUSH | +----------------------------------------------------------+---------------------------------------------------------------------+ | CMSEND - Send_Data | (See note at end of table.) | | | (TP-DATA request) UD-TRANSFER request | | buffer (parameter) | User-Data | +----------------------------------------------------------+---------------------------------------------------------------------+ +----------------------------------------------------------+---------------------------------------------------------------------+ | IF: send_type = CM_SEND_AND_CONFIRM | +----------------------------------------------------------+---------------------------------------------------------------------+ | CMSEND - Send_Data | (See note at end of table.) | | | (TP-DATA request) UD-TRANSFER request | | buffer (parameter) | User-Data | | | TP-HANDSHAKE request | | confirmation_urgency (characteristic) | Confirmation-Urgency | +----------------------------------------------------------+---------------------------------------------------------------------+ +----------------------------------------------------------+---------------------------------------------------------------------+ | IF: send_type = CM_SEND_AND_PREP_TO_RECEIVE | | AND prepare_to_receive_type = CM_PREP_TO_RECEIVE_SYNC_LEVEL | | AND sync_level = CM_NONE | +----------------------------------------------------------+---------------------------------------------------------------------+ | CMSEND - Send_Data | (TP-DATA request) UD-TRANSFER request | | buffer (parameter) | User-Data | | | TP-GRANT-CONTROL request | | | (no parameters) | +----------------------------------------------------------+---------------------------------------------------------------------+ +----------------------------------------------------------+---------------------------------------------------------------------+ | IF: send_type = CM_SEND_AND_PREP_TO_RECEIVE | | AND prepare_to_receive_type = CM_PREP_TO_RECEIVE_SYNC_LEVEL | | AND sync_level = CM_CONFIRM | +----------------------------------------------------------+---------------------------------------------------------------------+ | CMSEND - Send_Data | (TP-DATA request) UD-TRANSFER request | | buffer (parameter) | User-Data | | | TP-HANDSHAKE-AND-GRANT-CONTROL request | | confirmation_urgency (characteristic) | Confirmation-Urgency | +----------------------------------------------------------+---------------------------------------------------------------------+ +----------------------------------------------------------+---------------------------------------------------------------------+ | IF: send_type = CM_SEND_AND_PREP_TO_RECEIVE | | AND prepare_to_receive_type = CM_PREP_TO_RECEIVE_SYNC_LEVEL | | AND sync_level = CM_SYNC_POINT or sync_level = CM_SYNC_POINT_NO_CONFIRM | | AND the conversation is included in the current transaction | +----------------------------------------------------------+---------------------------------------------------------------------+ | CMSEND - Send_Data | (See note at end of table.) | | | (TP-DATA request) UD-TRANSFER request | | buffer (parameter) | User-Data | | | TP-DEFERRED-GRANT-CONTROL request | | | (no parameters) | +----------------------------------------------------------+---------------------------------------------------------------------+ +----------------------------------------------------------+---------------------------------------------------------------------+ | IF: send_type = CM_SEND_AND_PREP_TO_RECEIVE | | AND prepare_to_receive_type = CM_PREP_TO_RECEIVE_SYNC_LEVEL | | AND sync_level = CM_SYNC_POINT | | AND (transaction_control = CM_UNCHAINED_TRANSACTIONS and the conversation is not currently included in a transaction) | +----------------------------------------------------------+---------------------------------------------------------------------+ | CMSEND - Send_Data | (TP-DATA request) UD-TRANSFER request | | buffer (parameter) | User-Data | | | TP-HANDSHAKE-AND-GRANT-CONTROL request | | confirmation_urgency (characteristic) | Confirmation-Urgency | +----------------------------------------------------------+---------------------------------------------------------------------+ +----------------------------------------------------------+---------------------------------------------------------------------+ | IF: send_type = CM_SEND_AND_PREP_TO_RECEIVE | | AND prepare_to_receive_type = CM_PREP_TO_RECEIVE_SYNC_LEVEL | | AND sync_level = CM_SYNC_POINT_NO_CONFIRM | | AND (transaction_control = CM_UNCHAINED_TRANSACTIONS and the conversation is not currently included in a transaction) | +----------------------------------------------------------+---------------------------------------------------------------------+ | CMSEND - Send_Data | (TP-DATA request) UD-TRANSFER request | | buffer (parameter) | User-Data | | | TP-GRANT-CONTROL request | | | (no parameters) | +----------------------------------------------------------+---------------------------------------------------------------------+ +----------------------------------------------------------+---------------------------------------------------------------------+ | IF: send_type = CM_SEND_AND_PREP_TO_RECEIVE | | AND prepare_to_receive_type = CM_PREP_TO_RECEIVE_FLUSH | +----------------------------------------------------------+---------------------------------------------------------------------+ | CMSEND - Send_Data | (See note at end of table.) | | | (TP-DATA request) UD-TRANSFER request | | buffer (parameter) | User-Data | | | TP-GRANT-CONTROL request | | | (no parameters) | +----------------------------------------------------------+---------------------------------------------------------------------+ +----------------------------------------------------------+---------------------------------------------------------------------+ | IF: send_type = CM_SEND_AND_PREP_TO_RECEIVE | | AND prepare_to_receive_type = CM_PREP_TO_RECEIVE_CONFIRM | +----------------------------------------------------------+---------------------------------------------------------------------+ | CMSEND - Send_Data | (See note at end of table.) | | | (TP-DATA request) UD-TRANSFER request | | buffer (parameter) | User-Data | | | TP-HANDSHAKE-AND-GRANT-CONTROL request | | confirmation_urgency (characteristic) | Confirmation-Urgency | +----------------------------------------------------------+---------------------------------------------------------------------+ +----------------------------------------------------------+---------------------------------------------------------------------+ | IF: send_type = CM_SEND_AND_DEALLOCATE | | AND deallocate_type = CM_DEALLOCATE_SYNC_LEVEL | | AND sync_level = CM_NONE | +----------------------------------------------------------+---------------------------------------------------------------------+ | CMSEND - Send_Data | (TP-DATA request) UD-TRANSFER request | | buffer (parameter) | User-Data | | | TP-END-DIALOGUE request | | =false | Confirmation | +----------------------------------------------------------+---------------------------------------------------------------------+ +----------------------------------------------------------+---------------------------------------------------------------------+ | IF: send_type = CM_SEND_AND_DEALLOCATE | | AND deallocate_type = CM_DEALLOCATE_SYNC_LEVEL | | AND sync_level = CM_CONFIRM | +----------------------------------------------------------+---------------------------------------------------------------------+ | CMSEND - Send_Data | (TP-DATA request) UD-TRANSFER request | | buffer (parameter) | User-Data | | | TP-END-DIALOGUE request | | =true | Confirmation | +----------------------------------------------------------+---------------------------------------------------------------------+ +----------------------------------------------------------+---------------------------------------------------------------------+ | IF: send_type = CM_SEND_AND_DEALLOCATE | | AND deallocate_type = CM_DEALLOCATE_SYNC_LEVEL | | AND sync_level = CM_SYNC_POINT or sync_level = CM_SYNC_POINT_NO_CONFIRM | | AND the conversation is included in the current transaction | +----------------------------------------------------------+---------------------------------------------------------------------+ | CMSEND - Send_Data | (See note at end of table.) | | | (TP-DATA request) UD-TRANSFER request | | buffer (parameter) | User-Data | | | TP-DEFERRED-END-DIALOGUE request | | | (no parameters) | +----------------------------------------------------------+---------------------------------------------------------------------+ +----------------------------------------------------------+---------------------------------------------------------------------+ | IF: send_type = CM_SEND_AND_DEALLOCATE | | AND deallocate_type = CM_DEALLOCATE_SYNC_LEVEL | | AND sync_level = CM_SYNC_POINT | | AND (transaction_control = CM_UNCHAINED_TRANSACTIONS and the conversation is not currently included in a transaction) | +----------------------------------------------------------+---------------------------------------------------------------------+ | CMSEND - Send_Data | (TP-DATA request) UD-TRANSFER request | | buffer (parameter) | User-Data | | | TP-END-DIALOGUE request | | =true | Confirmation | +----------------------------------------------------------+---------------------------------------------------------------------+ +----------------------------------------------------------+---------------------------------------------------------------------+ | IF: send_type = CM_SEND_AND_DEALLOCATE | | AND deallocate_type = CM_DEALLOCATE_SYNC_LEVEL | | AND sync_level = CM_SYNC_POINT_NO_CONFIRM | | AND (transaction_control = CM_UNCHAINED_TRANSACTIONS and the conversation is not currently included in a transaction) | +----------------------------------------------------------+---------------------------------------------------------------------+ | CMSEND - Send_Data | (TP-DATA request) UD-TRANSFER request | | buffer (parameter) | User-Data | | | TP-END-DIALOGUE request | | =false | Confirmation | +----------------------------------------------------------+---------------------------------------------------------------------+ +----------------------------------------------------------+---------------------------------------------------------------------+ | IF: send_type = CM_SEND_AND_DEALLOCATE | | AND deallocate_type = CM_DEALLOCATE_FLUSH | +----------------------------------------------------------+---------------------------------------------------------------------+ | CMSEND - Send_Data | (TP-DATA request) UD-TRANSFER request | | buffer (parameter) | User-Data | | | TP-END-DIALOGUE request | | =false | Confirmation | +----------------------------------------------------------+---------------------------------------------------------------------+ +----------------------------------------------------------+---------------------------------------------------------------------+ | IF: send_type = CM_SEND_AND_DEALLOCATE | | AND deallocate_type = CM_DEALLOCATE_CONFIRM | +----------------------------------------------------------+---------------------------------------------------------------------+ | CMSEND - Send_Data | (TP-DATA request) UD-TRANSFER request | | buffer (parameter) | User-Data | | | TP-END-DIALOGUE request | | =true | Confirmation | +----------------------------------------------------------+---------------------------------------------------------------------+ +----------------------------------------------------------+---------------------------------------------------------------------+ | IF: send_type = CM_SEND_AND_DEALLOCATE | | AND deallocate_type = CM_DEALLOCATE_ABEND | +----------------------------------------------------------+---------------------------------------------------------------------+ | CMSEND - Send_Data | (See note at end of table.) | | | (TP-DATA request) UD-TRANSFER request | | buffer (parameter) | User-Data | | | TP-U-ABORT request | | log_data (characteristic) | User-Data | +----------------------------------------------------------+---------------------------------------------------------------------+ | NOTE: | | IF: sync_level = CM_SYNC_POINT or sync_level = CM_SYNC_POINT_NO_CONFIRM | | AND transaction_control = CM_UNCHAINED_TRANSACTIONS | | AND begin_transaction = CM_BEGIN_IMPLICIT | | AND the Send_Data call is the first activity on the conversation following the start of the current transaction, | | THEN the identified OSI TP Service primitives are preceded by a TP-BEGIN-TRANSACTION request. | +--------------------------------------------------------------------------------------------------------------------------------+ +--------------------------------------------------------------------------------------------------------------------------------+ | Table 55. CMSERR - Send_Error Mapping | +----------------------------------------------------------+---------------------------------------------------------------------+ | CPI-C CALL | OSI TP SERVICE | | PARAMETERS AND CONVERSATION CHARACTERISTICS | PARAMETERS | +----------------------------------------------------------+---------------------------------------------------------------------+ | IF: Confirmation = true on TP-BEGIN-DIALOGUE indication | | AND it is the first activity on the conversation following Accept_Conversation or Accept_Incoming | +----------------------------------------------------------+---------------------------------------------------------------------+ | CMSERR - Send_Error | TP-BEGIN-DIALOGUE response | | = accepted | Result | | initialization_data (characteristic) | User-Data | | | TP-U-ERROR request | | | (no parameters) | +----------------------------------------------------------+---------------------------------------------------------------------+ +----------------------------------------------------------+---------------------------------------------------------------------+ | IF: conversation_state = CM_SEND_STATE or CM_SEND_PENDING_STATE | | AND sync_level = CM_SYNC_POINT or CM_SYNC_POINT_NO_CONFIRM | | AND transaction_control = CM_UNCHAINED_TRANSACTIONS | | AND begin_transaction = CM_BEGIN_IMPLICIT | | AND it is the first activity on the conversation following the start of the current transaction | +----------------------------------------------------------+---------------------------------------------------------------------+ | CMSERR - Send_Error | TP-BEGIN-TRANSACTION request | | | (no parameters) | | | TP-U-ERROR request | | | (no parameters) | +----------------------------------------------------------+---------------------------------------------------------------------+ +----------------------------------------------------------+---------------------------------------------------------------------+ | IF: conversation_state = CM_SYNC_POINT_STATE, CM_SYNC_POINT_SEND_STATE, or CM_SYNC_POINT_DEALLOCATE_STATE | +----------------------------------------------------------+---------------------------------------------------------------------+ | CMSERR - Send_Error | TP-ROLLBACK request | | | (no parameters) | +----------------------------------------------------------+---------------------------------------------------------------------+ +----------------------------------------------------------+---------------------------------------------------------------------+ | OTHERWISE: | +----------------------------------------------------------+---------------------------------------------------------------------+ | CMSERR - Send_Error | TP-U-ERROR request | | | (no parameters) | +----------------------------------------------------------+---------------------------------------------------------------------+ Mapping OSI TP Services to CPI-C for Half-Duplex Conversations The following tables present the complete mapping from the OSI TP services to CPI-C for half-duplex conversations. The following conventions are used within the tables in this section: - The parameter is not applicable because of other parameter settings. * The parameter is not directly supported by CPI-C. =XXX The value "xxx" is expected by CPI-C. +--------------------------------------------------------------------------------------------------------------------------------+ | Table 56. Mapping OSI TP Services to CPI-C Calls, Parameters, and Conversation Characteristics | +---------------------------------------------------------------------+----------------------------------------------------------+ | OSI TP SERVICE PARAMETERS | CPI-C CALLS, PARAMETERS, AND CHARACTERISTICS | +---------------------------------------------------------------------+----------------------------------------------------------+ | (TP-DATA indication) UD-TRANSFER indication | Completes an outstanding | | | CMRCV - Receive. | +---------------------------------------------------------------------+----------------------------------------------------------+ | TP-BEGIN-DIALOGUE indication | Completes an outstanding | | (See Table 57 for details.) | CMACCP - Accept_Conversation | | | CMACCI - Accept_Incoming | | | and maps to conversation characteristics. | +---------------------------------------------------------------------+----------------------------------------------------------+ | TP-BEGIN-DIALOGUE confirm | Completes an outstanding | | (See Table 58 for details.) | CMRCV - Receive | | | and maps to | | | control_information_received values. | +---------------------------------------------------------------------+----------------------------------------------------------+ | TP-END-DIALOGUE indication | Completes an outstanding | | (See Table 59 for details.) | CMRCV - Receive | | | and maps to status_received or return_code values. | +---------------------------------------------------------------------+----------------------------------------------------------+ | TP-END-DIALOGUE confirm | Completes an outstanding | | (no parameters) | CMSEND - Send_Data | | | CMDEAL - Deallocate | | | and maps to | | | return_code = CM_OK. | +---------------------------------------------------------------------+----------------------------------------------------------+ | TP-U-ERROR indication | Completes an outstanding | | (no parameters) | CMCFM - Confirm | | | CMDEAL - Deallocate | | | CMDFDE - Deferred_Deallocate | | | CMINCL - Include_Partner_In_Transaction | | | CMPREP - Prepare | | | CMPTR - Prepare_To_Receive | | | CMRCV - Receive | | | CMSEND - Send_Data | | | CMSERR - Send_Error | | | and maps to | | | return_code = CM_PROGRAM_ERROR_PURGING. | +---------------------------------------------------------------------+----------------------------------------------------------+ | TP-U-ABORT indication | Completes an outstanding | | (See Table 60 for details.) | CMRCV - Receive | | | and maps to return_code values. | +---------------------------------------------------------------------+----------------------------------------------------------+ | TP-P-ABORT indication | Completes an outstanding | | (See Table 61 for details.) | CMRCV - Receive | | | and maps to return_code values. | +---------------------------------------------------------------------+----------------------------------------------------------+ | TP-GRANT-CONTROL indication | Completes an outstanding | | (no parameters) | CMRCV - Receive | | | and maps to | | | status_received = CM_SEND_RECEIVED. | +---------------------------------------------------------------------+----------------------------------------------------------+ | TP-REQUEST-CONTROL indication | Maps to | | (no parameters) | control_information_received = | | | CM_REQ_TO_SEND_RECEIVED. | +---------------------------------------------------------------------+----------------------------------------------------------+ | TP-HANDSHAKE indication | Completes an outstanding | | (no parameters) | CMRCV - Receive | | | and maps to | | | status_received = CM_CONFIRM_RECEIVED. | +---------------------------------------------------------------------+----------------------------------------------------------+ | TP-HANDSHAKE confirm | Completes an outstanding | | (no parameters) | CMCFM - Confirm | | | CMSEND - Send_Data | | | and maps to | | | return_code = CM_OK. | +---------------------------------------------------------------------+----------------------------------------------------------+ | TP-HANDSHAKE-AND-GRANT-CONTROL indication | Completes an outstanding | | (no parameters) | CMRCV - Receive | | | and maps to | | | status_received = CM_CONFIRM_SEND_RECEIVED. | +---------------------------------------------------------------------+----------------------------------------------------------+ | TP-HANDSHAKE-AND-GRANT-CONTROL confirm | Completes an outstanding | | (no parameters) | CMPTR - Prepare_To_Receive | | | CMSEND - Send_Data | | | and maps to | | | return_code = CM_OK. | +---------------------------------------------------------------------+----------------------------------------------------------+ | TP-BEGIN-TRANSACTION indication | Completes an outstanding | | (no parameters) | CMRCV - Receive | | | and maps to | | | status_received = CM_JOIN_TRANSACTION. | +---------------------------------------------------------------------+----------------------------------------------------------+ | TP-DEFERRED-END-DIALOGUE indication | Maps to status_received values. | | (See Table 62 for details.) | | +---------------------------------------------------------------------+----------------------------------------------------------+ | TP-DEFERRED-GRANT-CONTROL indication | Maps to status_received values. | | (See Table 62 for details.) | | +---------------------------------------------------------------------+----------------------------------------------------------+ | TP-PREPARE indication | Completes an outstanding | | (See Table 62 for details.) | CMRCV - Receive | | | and maps to status_received values. | +---------------------------------------------------------------------+----------------------------------------------------------+ | TP-READY indication | Completes an outstanding | | (no parameters) | CMRCV - Receive | | | and maps to | | | status_received = CM_PREPARE_OK. | +---------------------------------------------------------------------+----------------------------------------------------------+ | TP-COMMIT indication | (Handled by a resource recovery component.) | +---------------------------------------------------------------------+----------------------------------------------------------+ | TP-COMMIT-COMPLETE indication | (Handled by a resource recovery component.) | +---------------------------------------------------------------------+----------------------------------------------------------+ | TP-ROLLBACK indication | Maps to | | (no parameters) | return_code = CM_TAKE_BACKOUT. | +---------------------------------------------------------------------+----------------------------------------------------------+ | TP-ROLLBACK-COMPLETE indication | (Handled by a resource recovery component.) | +---------------------------------------------------------------------+----------------------------------------------------------+ | TP-HEURISTIC-REPORT indication | (Handled by a resource recovery component.) | +---------------------------------------------------------------------+----------------------------------------------------------+ +--------------------------------------------------------------------------------------------------------------------------------+ | Table 57. TP-BEGIN-DIALOGUE indication Mapping | +---------------------------------------------------------------------+----------------------------------------------------------+ | OSI TP SERVICE PARAMETERS | CPI-C CALLS, PARAMETERS, AND CHARACTERISTICS | +---------------------------------------------------------------------+----------------------------------------------------------+ | TP-BEGIN-DIALOGUE indication | Maps to conversation characteristics: | | Initiating-AP-Title | AP_title (characteristic) | | Initiating-API-Identifier | * | | Initiating-AE-Qualifier | AE_qualifier (characteristic) | | Initiating-AEI-Identifier | * | | Initiating-TPSU-Title | TP_name (characteristic) | | Functional-Units | transaction_control (characteristic), | | | send_receive_mode, and | | Begin-Transaction | sync_level | | true | | | | Completes an outstanding | | | CMRCV - Receive | | | and maps to | | | status_received = CM_JOIN_TRANSACTION; | | | (also available through a resource | | false | recovery interface) | | Confirmation | *(through a resource recovery interface) | | User-Data | *(confirmation is implicit) | | | initialization_data (characteristic) | +---------------------------------------------------------------------+----------------------------------------------------------+ +--------------------------------------------------------------------------------------------------------------------------------+ | Table 58. TP-BEGIN-DIALOGUE confirm Mapping | +---------------------------------------------------------------------+----------------------------------------------------------+ | OSI TP SERVICE PARAMETERS | CPI-C CALLS, PARAMETERS, AND CHARACTERISTICS | +---------------------------------------------------------------------+----------------------------------------------------------+ | IF: Result = accepted | | AND User-Data is not present | +---------------------------------------------------------------------+----------------------------------------------------------+ | TP-BEGIN-DIALOGUE confirm | Maps to control_information_received = | | | CM_ALLOCATE_CONFIRMED. | | Functional-Units | * | | Diagnostic | - | | Rollback | - | | User-Data | - | +---------------------------------------------------------------------+----------------------------------------------------------+ +---------------------------------------------------------------------+----------------------------------------------------------+ | IF: Result = accepted | | AND User-Data is present | +---------------------------------------------------------------------+----------------------------------------------------------+ | TP-BEGIN-DIALOGUE confirm | Maps to control_information_received = | | | CM_ALLOCATE_CONFIRMED_WITH_DATA. | | Functional-Units | * | | Diagnostic | - | | Rollback | - | | User-Data | initialization_data (characteristic) | +---------------------------------------------------------------------+----------------------------------------------------------+ +---------------------------------------------------------------------+----------------------------------------------------------+ | IF: Result = rejected(user) | | AND User-Data is not present | +---------------------------------------------------------------------+----------------------------------------------------------+ | TP-BEGIN-DIALOGUE confirm | Maps to return_code values. | | Functional-Units | * | | Diagnostic | - | | Rollback | | | true | CM_DEALLOCATED_ABEND_BO | | false | CM_DEALLOCATED_ABEND | | User-Data | initialization_data (characteristic) | +---------------------------------------------------------------------+----------------------------------------------------------+ +---------------------------------------------------------------------+----------------------------------------------------------+ | IF: Result = rejected(user) | | AND User-Data is present | +---------------------------------------------------------------------+----------------------------------------------------------+ | TP-BEGIN-DIALOGUE confirm | Maps to control_information_received = | | | CM_ALLOCATE_REJECTED_WITH_DATA. | | Functional-Units | * | | Diagnostic | - | | Rollback | - | | User-Data | initialization_data (characteristic) | | | | | | NOTE: CM_DEALLOCATED_ABEND will be returned | | | to the next call. | +---------------------------------------------------------------------+----------------------------------------------------------+ +---------------------------------------------------------------------+----------------------------------------------------------+ | IF: Result = rejected(provider) | | AND Rollback = true | +---------------------------------------------------------------------+----------------------------------------------------------+ | TP-BEGIN-DIALOGUE confirm | Maps to return_code values. | | Functional-Units | * | | Diagnostic | | | recipient-unknown | CM_RESOURCE_FAIL_NO_RETRY_BO | | recipient-tpsu-title-unknown | CM_TPN_NOT_RECOGNIZED | | tpsu-not-available(permanent) | CM_TP_NOT_AVAILABLE_NO_RETRY | | tpsu-not-available(transient) | CM_TP_NOT_AVAILABLE_RETRY | | recipient-tpsu-title-required | CM_TPN_NOT_RECOGNIZED | | functional-unit-not-supported | CM_SYNC_LVL_NOT_SUPPORTED_SYS | | functional-unit-combination-not-supported | CM_SYNC_LVL_NOT_SUPPORTED_SYS | | no-reason-given | CM_RESOURCE_FAIL_NO_RETRY_BO | | User-Data | initialization_data (characteristic) | +---------------------------------------------------------------------+----------------------------------------------------------+ +---------------------------------------------------------------------+----------------------------------------------------------+ | IF: Result = rejected(provider) | | AND Rollback = false | +---------------------------------------------------------------------+----------------------------------------------------------+ | TP-BEGIN-DIALOGUE confirm | Maps to return_code values. | | Functional-Units | * | | Diagnostic | | | recipient-unknown | CM_RESOURCE_FAILURE_NO_RETRY | | recipient-tpsu-title-unknown | CM_TPN_NOT_RECOGNIZED | | tpsu-not-available(permanent) | CM_TP_NOT_AVAILABLE_NO_RETRY | | tpsu-not-available(transient) | CM_TP_NOT_AVAILABLE_RETRY | | recipient-tpsu-title-required | CM_TPN_NOT_RECOGNIZED | | functional-unit-not-supported | CM_SYNC_LVL_NOT_SUPPORTED_SYS | | functional-unit-combination-not-supported | CM_SYNC_LVL_NOT_SUPPORTED_SYS | | no-reason-given | CM_RESOURCE_FAILURE_NO_RETRY | | User-Data | initialization_data (characteristic) | +---------------------------------------------------------------------+----------------------------------------------------------+ +--------------------------------------------------------------------------------------------------------------------------------+ | Table 59. TP-END-DIALOGUE indication Mapping | +---------------------------------------------------------------------+----------------------------------------------------------+ | OSI TP SERVICE PARAMETERS | CPI-C CALLS, PARAMETERS, AND CHARACTERISTICS | +---------------------------------------------------------------------+----------------------------------------------------------+ | IF: Confirmation = true | +---------------------------------------------------------------------+----------------------------------------------------------+ | TP-END-DIALOGUE indication | status_received = | | (no parameters) | CM_CONFIRM_DEALLOCATE_RECEIVED | +---------------------------------------------------------------------+----------------------------------------------------------+ +---------------------------------------------------------------------+----------------------------------------------------------+ | IF: Confirmation = false | +---------------------------------------------------------------------+----------------------------------------------------------+ | TP-END-DIALOGUE indication | return_code = CM_DEALLOCATED_NORMAL | | (no parameters) | | +---------------------------------------------------------------------+----------------------------------------------------------+ +--------------------------------------------------------------------------------------------------------------------------------+ | Table 60. TP-U-ABORT indication Mapping | +---------------------------------------------------------------------+----------------------------------------------------------+ | OSI TP SERVICE PARAMETERS | CPI-C CALLS, PARAMETERS, AND CHARACTERISTICS | +---------------------------------------------------------------------+----------------------------------------------------------+ | IF: Rollback = true | +---------------------------------------------------------------------+----------------------------------------------------------+ | TP-U-ABORT indication | return_code = CM_DEALLOCATED_ABEND_BO | | User_Data | log_data (characteristic) | +---------------------------------------------------------------------+----------------------------------------------------------+ +---------------------------------------------------------------------+----------------------------------------------------------+ | IF: Rollback = false | +---------------------------------------------------------------------+----------------------------------------------------------+ | TP-U-ABORT indication | return_code = CM_DEALLOCATED_ABEND | | User_Data | log_data (characteristic) | +---------------------------------------------------------------------+----------------------------------------------------------+ +--------------------------------------------------------------------------------------------------------------------------------+ | Table 61. TP-P-ABORT indication Mapping | +---------------------------------------------------------------------+----------------------------------------------------------+ | OSI TP SERVICE PARAMETERS | CPI-C CALLS, PARAMETERS, AND CHARACTERISTICS | +---------------------------------------------------------------------+----------------------------------------------------------+ | IF: Rollback = true | +---------------------------------------------------------------------+----------------------------------------------------------+ | TP-P-ABORT indication | Maps to return_code values: | | Diagnostic | | | permanent-failure | CM_RESOURCE_FAIL_NO_RETRY_BO | | transient-failure | CM_RESOURCE_FAILURE_RETRY_BO | | protocol-error | CM_RESOURCE_FAIL_NO_RETRY_BO | | begin-transaction-reject | * | | end-dialogue-collision | * | | begin-transaction-end-dialogue-collision | * | +---------------------------------------------------------------------+----------------------------------------------------------+ +---------------------------------------------------------------------+----------------------------------------------------------+ | IF: Rollback = false | +---------------------------------------------------------------------+----------------------------------------------------------+ | TP-P-ABORT indication | Maps to return_code values: | | Diagnostic | | | permanent-failure | CM_RESOURCE_FAILURE_NO_RETRY | | transient-failure | CM_RESOURCE_FAILURE_RETRY | | protocol-error | CM_RESOURCE_FAILURE_NO_RETRY | | begin-transaction-reject | * | | end-dialogue-collision | * | | begin-transaction-end-dialogue-collision | * | +---------------------------------------------------------------------+----------------------------------------------------------+ +--------------------------------------------------------------------------------------------------------------------------------+ | Table 62. TP-DEFERRED-END-DIALOGUE, TP-DEFERRED-GRANT-CONTROL, and TP-PREPARE indication Mapping | +---------------------------------------------------------------------+----------------------------------------------------------+ | OSI TP SERVICE PARAMETERS | CPI-C CALLS, PARAMETERS, AND CHARACTERISTICS | +---------------------------------------------------------------------+----------------------------------------------------------+ | IF: a TP-DEFERRED-END-DIALOGUE indication has been received | +---------------------------------------------------------------------+----------------------------------------------------------+ | TP-PREPARE indication | Maps to status_received values: | | Data-Permitted | | | false | CM_TAKE_COMMIT_DEALLOCATE | | true | CM_TAKE_COMMIT_DEALLOCATE_DATA_OK | +---------------------------------------------------------------------+----------------------------------------------------------+ +---------------------------------------------------------------------+----------------------------------------------------------+ | IF: a TP-DEFERRED-END-DIALOGUE indication has NOT been received | | AND a TP-DEFERRED-GRANT-CONTROL indication has been received | +---------------------------------------------------------------------+----------------------------------------------------------+ | TP-PREPARE indication | Maps to status_received values: | | Data-Permitted | | | false | CM_TAKE_COMMIT_SEND | | true | CM_TAKE_COMMIT_SEND_DATA_OK | +---------------------------------------------------------------------+----------------------------------------------------------+ +---------------------------------------------------------------------+----------------------------------------------------------+ | IF: a TP-DEFERRED-END-DIALOGUE indication has NOT been received | | AND a TP-DEFERRED-GRANT-CONTROL indication has NOT been received | +---------------------------------------------------------------------+----------------------------------------------------------+ | TP-PREPARE indication | Maps to status_received values: | | Data-Permitted | | | false | CM_TAKE_COMMIT | | true | CM_TAKE_COMMIT_DATA_OK | +---------------------------------------------------------------------+----------------------------------------------------------+ Sequencing Rules and State Tables The sequencing rules and state tables for the CPI-C ASE are contained in Appendix C, "State Tables." CPI-C ASE Protocol Definition There are no additional protocol definitions required by the CPI-C ASE beyond those defined in ISO/IEC 10026, Parts 1 - 3. CPI-C ASE Structure and Encoding of APDUs There are no additional APDUs required by the CPI-C ASE beyond those defined in ISO/IEC 10026, Parts 1 - 3. ---------------------------------------------------------------- CPI Communications and OSI TP CRMs for Full-Duplex Conversations This section summarizes the CPI-C application service element (ASE) services, maps the services both to and from the OSI TP services, and defines the sequencing rules and state table for CPI-C use by OSI TP programs using full-duplex (FDX) conversations. The CPI Communications calls have been mapped to the OSI TP services described in ISO/IEC 10026-2, Information Technology -- Open Systems Interconnection -- Distributed Transaction Processing -- Part 2: OSI TP Service Definition. This section is intended for programmers who are familiar with OSI TP. The following conventions are used within the tables in this section: * The parameter is not directly supported by CPI-C. =XXX The value "xxx" is always used. (R) The return code is returned on the Receive call. (S) The return code is returned on calls associated with the Send queue. The abbreviations for status_received and return code values used in this mapping are given in "Return Code Values [ ]" and "data_received and status_received ¤ , ‡," respectively. +--------------------------------------------------------------------------------------------------------------------------------+ | Table 63. Mapping CPI-C Calls on Full-Duplex Conversations to OSI TP Services | +----------------------------------------------------------+---------------------------------------------------------------------+ | CPI-C CALL | OSI TP SERVICE | +----------------------------------------------------------+---------------------------------------------------------------------+ | CMALLC - Allocate | TP-BEGIN-DIALOGUE request | | (See Table 64 for details.) | | +----------------------------------------------------------+---------------------------------------------------------------------+ | CMCANC - Cancel_Conversation | TP-BEGIN-DIALOGUE response | | (See Table 65 for details.) | TP-U-ABORT request | +----------------------------------------------------------+---------------------------------------------------------------------+ | CMCFMD - Confirmed | TP-END-DIALOGUE response | | (See Table 66 for details.) | | +----------------------------------------------------------+---------------------------------------------------------------------+ | CMDEAL - Deallocate | TP-END-DIALOGUE request | | (See Table 67 for details.) | TP-DEFERRED-END-DIALOGUE request | | | TP-BEGIN-DIALOGUE response | | | TP-U-ABORT request | +----------------------------------------------------------+---------------------------------------------------------------------+ | CMDFDE - Deferred_Deallocate | TP-DEFERRED-END-DIALOGUE request | | (See Table 68 for details.) | | +----------------------------------------------------------+---------------------------------------------------------------------+ | CMINCL - Include_Partner_In_Transaction | TP-BEGIN-TRANSACTION request | | (See Table 69 for details.) | | +----------------------------------------------------------+---------------------------------------------------------------------+ | CMPREP - Prepare | TP-BEGIN-TRANSACTION request | | (See Table 70 for details.) | TP-PREPARE request | +----------------------------------------------------------+---------------------------------------------------------------------+ | CMRCV - Receive | TP-BEGIN-DIALOGUE response | | (See Table 71 for details.) | TP-BEGIN-TRANSACTION request | +----------------------------------------------------------+---------------------------------------------------------------------+ | CMSEND - Send_Data | TP-BEGIN-DIALOGUE response | | (See Table 72 for details.) | TP-BEGIN-TRANSACTION request | | | (TP-DATA request) UD-TRANSFER request | | | TP-END-DIALOGUE request | | | TP-DEFERRED-END-DIALOGUE request | | | TP-U-ABORT request | +----------------------------------------------------------+---------------------------------------------------------------------+ | CMSERR - Send_Error | TP-BEGIN-DIALOGUE response | | (See Table 73 for details.) | TP-BEGIN-TRANSACTION request | | | TP-U-ERROR request | +----------------------------------------------------------+---------------------------------------------------------------------+ The following OSI TP services are not directly mapped to from the CPI-C calls: TP-COMMIT REQUEST is supported through a resource recovery interface. TP-DONE REQUEST is not externalized to the application program. TP-ROLLBACK REQUEST is supported through a resource recovery interface. +--------------------------------------------------------------------------------------------------------------------------------+ | Table 64. CMALLC - Allocate Mapping | +----------------------------------------------------------+---------------------------------------------------------------------+ | CPI-C CALL | OSI TP SERVICE | | PARAMETERS AND CONVERSATION CHARACTERISTICS | PARAMETERS | +----------------------------------------------------------+---------------------------------------------------------------------+ | IF: sync_level = CM_NONE | +----------------------------------------------------------+---------------------------------------------------------------------+ | CMALLC - Allocate | TP-BEGIN-DIALOGUE request | | * | Initiating-TPSU-Title | | AP_title (characteristic) | Recipient-AP-Title | | * | Recipient-API-Identifier | | AE_qualifier (characteristic) | Recipient-AE-Qualifier | | * | Recipient-AEI-Identifier | | TP_name (characteristic) | Recipient-TPSU-Title | | =Dialogue and Shared | Functional-Units | | mode_name (characteristic) | Quality-of-Service | | application_context_name (characteristic) | Application-Context-Name | | n/a | Begin-Transaction | | allocate_confirm (characteristic) | Confirmation | | initialization_data (characteristic) | User-Data | +----------------------------------------------------------+---------------------------------------------------------------------+ +----------------------------------------------------------+---------------------------------------------------------------------+ | IF: sync_level = CM_SYNC_POINT_NO_CONFIRM | | AND transaction_control = CM_CHAINED_TRANSACTIONS | +----------------------------------------------------------+---------------------------------------------------------------------+ | CMALLC - Allocate | TP-BEGIN-DIALOGUE request | | * | Initiating-TPSU-Title | | AP_title (characteristic) | Recipient-AP-Title | | * | Recipient-API-Identifier | | AE_qualifier (characteristic) | Recipient-AE-Qualifier | | * | Recipient-AEI-Identifier | | TP_name (characteristic) | Recipient-TPSU-Title | | =Dialogue, Shared, | Functional-Units | | Commit and Chained Transactions | | | mode_name (characteristic) | Quality-of-Service | | application_context_name (characteristic) | Application-Context-Name | | n/a | Begin-Transaction | | allocate_confirm (characteristic) | Confirmation | | initialization_data (characteristic) | User-Data | | | | | | | | | | | | | +----------------------------------------------------------+---------------------------------------------------------------------+ +----------------------------------------------------------+---------------------------------------------------------------------+ | IF: sync_level = CM_SYNC_POINT_NO_CONFIRM | | AND transaction_control = CM_UNCHAINED_TRANSACTIONS | +----------------------------------------------------------+---------------------------------------------------------------------+ | CMALLC - Allocate | TP-BEGIN-DIALOGUE request | | * | Initiating-TPSU-Title | | AP_title (characteristic) | Recipient-AP-Title | | * | Recipient-API-Identifier | | AE_qualifier (characteristic) | Recipient-AE-Qualifier | | * | Recipient-AEI-Identifier | | TP_name (characteristic) | Recipient-TPSU-Title | | =Dialogue, Shared, | Functional-Units | | Commit, and Unchained Transactions | | | mode_name (characteristic) | Quality-of-Service | | application_context_name (characteristic) | Application-Context-Name | | begin_transaction (characteristic) | Begin-Transaction | | | (See note at end of table.) | | allocate_confirm (characteristic) | Confirmation | | initialization_data (characteristic) | User-Data | +----------------------------------------------------------+---------------------------------------------------------------------+ | NOTE: IF begin_transaction = CM_BEGIN_IMPLICIT | | AND transaction_control = CM_UNCHAINED_TRANSACTIONS | | AND the conversation's context is in transaction | | THEN Begin-Transaction is set to true; | | otherwise, Begin-Transaction is set to false. | +--------------------------------------------------------------------------------------------------------------------------------+ +--------------------------------------------------------------------------------------------------------------------------------+ | Table 65. CMCANC - Cancel_Conversation Mapping | +----------------------------------------------------------+---------------------------------------------------------------------+ | CPI-C CALL | OSI TP SERVICE | | PARAMETERS AND CONVERSATION CHARACTERISTICS | PARAMETERS | +----------------------------------------------------------+---------------------------------------------------------------------+ | IF: Confirmation = true on TP-BEGIN-DIALOGUE indication | | AND it is the first activity on the conversation following Accept_Conversation or Accept_Incoming | +----------------------------------------------------------+---------------------------------------------------------------------+ | CMCANC - Cancel_Conversation | TP-BEGIN-DIALOGUE response | | = rejected(user) | Result | | initialization_data (characteristic) | User-Data | +----------------------------------------------------------+---------------------------------------------------------------------+ +----------------------------------------------------------+---------------------------------------------------------------------+ | OTHERWISE: | +----------------------------------------------------------+---------------------------------------------------------------------+ | CMCANC - Cancel_Conversation | TP-U-ABORT request | | =null | User-Data | +----------------------------------------------------------+---------------------------------------------------------------------+ +--------------------------------------------------------------------------------------------------------------------------------+ | Table 66. CMCFMD - Confirmed Mapping | +----------------------------------------------------------+---------------------------------------------------------------------+ | CPI-C CALL | OSI TP SERVICE | | PARAMETERS AND CONVERSATION CHARACTERISTICS | PARAMETERS | +----------------------------------------------------------+---------------------------------------------------------------------+ +----------------------------------------------------------+---------------------------------------------------------------------+ | IF IN RESPONSE TO: status_received = CM_CONFIRM_DEALLOC_RECEIVED | +----------------------------------------------------------+---------------------------------------------------------------------+ | CMCFMD - Confirmed | TP-END-DIALOGUE response | | | (no parameters) | +----------------------------------------------------------+---------------------------------------------------------------------+ +--------------------------------------------------------------------------------------------------------------------------------+ | Table 67. CMDEAL - Deallocate Mapping | +---------------------------------------------------+----------------------------------------------------------------------------+ | CPI-C CALL | OSI TP SERVICE | | PARAMETERS AND CONVERSATION CHARACTERISTICS | PARAMETERS | +---------------------------------------------------+----------------------------------------------------------------------------+ | IF: deallocate_type = CM_DEALLOCATE_SYNC_LEVEL | | AND sync_level = CM_NONE | +---------------------------------------------------+----------------------------------------------------------------------------+ | | (See note at end of table.) | | CMDEAL - Deallocate | TP-END-DIALOGUE request | | =false | Confirmation | | | (and TP-END-DIALOGUE indication | | =false | Confirmation | | | IF (TP-END-DIALOGUE or TP-*-ABORT indication) | | | has not been processed) | +---------------------------------------------------+----------------------------------------------------------------------------+ +---------------------------------------------------+----------------------------------------------------------------------------+ | IF: deallocate_type = CM_DEALLOCATE_SYNC_LEVEL | | AND sync_level = CM_SYNC_POINT_NO_CONFIRM | | AND (transaction_control = CM_CHAINED_TRANSACTIONS | | OR (transaction_control = CM_UNCHAINED_TRANSACTIONS | | AND conversation is included in a transaction)) | +---------------------------------------------------+----------------------------------------------------------------------------+ | CMDEAL - Deallocate | (See note at end of table.) | | | TP-DEFERRED-END-DIALOGUE request | | | (no parameters) | +---------------------------------------------------+----------------------------------------------------------------------------+ +---------------------------------------------------+----------------------------------------------------------------------------+ | IF: deallocate_type = CM_DEALLOCATE_SYNC_LEVEL | | AND sync_level = CM_SYNC_POINT_NO_CONFIRM | | AND NOT (transaction_control = CM_CHAINED_TRANSACTIONS | | OR (transaction_control = CM_UNCHAINED_TRANSACTIONS | | AND conversation is included in a transaction)) | +---------------------------------------------------+----------------------------------------------------------------------------+ | | (See note at end of table.) | | CMDEAL - Deallocate | TP-END-DIALOGUE request | | =false | Confirmation | | | (and TP-END-DIALOGUE indication | | =false | Confirmation | | | IF (TP-END-DIALOGUE or TP-*-ABORT indication) | | | has not been processed) | +---------------------------------------------------+----------------------------------------------------------------------------+ +---------------------------------------------------+----------------------------------------------------------------------------+ | IF: deallocate_type = CM_DEALLOCATE_FLUSH | +---------------------------------------------------+----------------------------------------------------------------------------+ | | (See note at end of table.) | | CMDEAL - Deallocate | TP-END-DIALOGUE request | | =false | Confirmation | | | (and TP-END-DIALOGUE indication | | =false | Confirmation | | | IF (TP-END-DIALOGUE or TP-*-ABORT indication) | | | has not been processed) | +---------------------------------------------------+----------------------------------------------------------------------------+ +---------------------------------------------------+----------------------------------------------------------------------------+ | IF: deallocate_type = CM_DEALLOCATE_CONFIRM | +---------------------------------------------------+----------------------------------------------------------------------------+ | | (See note at end of table.) | | | IF no collision with cm_error_* OR (ok,(*,jt)) OR (ok,(*,cd)) | | CMDEAL - Deallocate | TP-END-DIALOGUE request | | =true | Confirmation | | | OTHERWISE return, respectively, | | | CM_DEALLOC_CONFIRM_REJECT (S), OR | | | TP-U-ABORT request (Rollback = true), | | | CM_DEALLOCATED_ABEND.begin_transaction_collision (R) and | | | CM_DEALLOCATED_ABEND.begin_transaction_collision (S), OR | | | TP-U-ABORT request (Rollback = false), | | | CM_DEALLOCATED_ABEND.dealloc_confirm_collision (R) and | | | CM_DEALLOCATED_ABEND.dealloc_confirm_collision (S). | | | If collision results in a return code on the Receive call, | | | replace the status_received value that caused the collision. | +---------------------------------------------------+----------------------------------------------------------------------------+ +---------------------------------------------------+----------------------------------------------------------------------------+ | IF: deallocate_type = CM_DEALLOCATE_ABEND | | AND it is the first activity on the conversation following Accept_Conversation or Accept_Incoming | +---------------------------------------------------+----------------------------------------------------------------------------+ | CMDEAL - Deallocate | TP-BEGIN-DIALOGUE response | | =rejected(user) | Result | | initialization_data (characteristic) | User-Data | +---------------------------------------------------+----------------------------------------------------------------------------+ +---------------------------------------------------+----------------------------------------------------------------------------+ | IF: deallocate_type = CM_DEALLOCATE_ABEND | | AND it is not the first activity on the conversation following Accept_Conversation or Accept_Incoming | +---------------------------------------------------+----------------------------------------------------------------------------+ | CMDEAL - Deallocate | TP-U-ABORT request | | log_data (characteristic) | User-Data | +---------------------------------------------------+----------------------------------------------------------------------------+ | NOTE: IF Confirmation = true on TP-BEGIN-DIALOGUE indication | | AND it is the first activity on the conversation following Accept_Conversation or Accept_Incoming | | THEN the identified OSI TP Service primitive will be preceded by TP-BEGIN-DIALOGUE response (Result = accepted and User-Data = | | initialization_data (characteristic)). | +--------------------------------------------------------------------------------------------------------------------------------+ +--------------------------------------------------------------------------------------------------------------------------------+ | Table 68. CMDFDE - Deferred_Deallocate Mapping | +----------------------------------------------------------+---------------------------------------------------------------------+ | CPI-C CALL | OSI TP SERVICE | | PARAMETERS AND CONVERSATION CHARACTERISTICS | PARAMETERS | +----------------------------------------------------------+---------------------------------------------------------------------+ | CMDFDE - Deferred_Deallocate | TP-DEFERRED-END-DIALOGUE request | | | (no parameters) | +----------------------------------------------------------+---------------------------------------------------------------------+ +--------------------------------------------------------------------------------------------------------------------------------+ | Table 69. CMINCL - Include_Partner_In_Transaction Mapping | +---------------------------------------------------+----------------------------------------------------------------------------+ | CPI-C CALL | OSI TP SERVICE | | PARAMETERS AND CONVERSATION CHARACTERISTICS | PARAMETERS | +---------------------------------------------------+----------------------------------------------------------------------------+ | CMINCL - Include_Partner_In_Transaction | TP-BEGIN-TRANSACTION request | | | (no parameters) | | | if no collision with (ok,(*,dc)); | | | OTHERWISE return | | | CM_DEALLOCATED_ABEND_BO.dealloc_confirm_collision (R), | | | instead of (ok,(*,dc)), or | | | CM_DEALLOCATED_ABEND_BO.dealloc_confirm_collision (S), | | | and send TP-U-ABORT request (Rollback = false). | +---------------------------------------------------+----------------------------------------------------------------------------+ +--------------------------------------------------------------------------------------------------------------------------------+ | Table 70. CMPREP - Prepare Mapping | +----------------------------------------------------------+---------------------------------------------------------------------+ | CPI-C CALL | OSI TP SERVICE | | PARAMETERS AND CONVERSATION CHARACTERISTICS | PARAMETERS | +----------------------------------------------------------+---------------------------------------------------------------------+ | IF: sync_level = CM_SYNC_POINT_NO_CONFIRM | | AND transaction_control = CM_UNCHAINED_TRANSACTIONS | | AND begin_transaction = CM_BEGIN_IMPLICIT | | AND it is the first activity on the conversation following the start of the current transaction | +----------------------------------------------------------+---------------------------------------------------------------------+ | CMPREP - Prepare | TP-BEGIN-TRANSACTION request | | | (no parameters) | | | TP-PREPARE request | | prepare_data_permitted (characteristic) | Data-Permitted | +----------------------------------------------------------+---------------------------------------------------------------------+ +----------------------------------------------------------+---------------------------------------------------------------------+ | IF: sync_level = CM_SYNC_POINT_NO_CONFIRM | | AND NOT (transaction_control = CM_UNCHAINED_TRANSACTIONS | | AND begin_transaction = CM_BEGIN_IMPLICIT | | AND it is the first activity on the conversation following the start of the current transaction) | +----------------------------------------------------------+---------------------------------------------------------------------+ | CMPREP - Prepare | TP-PREPARE request | | prepare_data_permitted (characteristic) | Data-Permitted | +----------------------------------------------------------+---------------------------------------------------------------------+ +--------------------------------------------------------------------------------------------------------------------------------+ | Table 71. CMRCV - Receive | +----------------------------------------------------------+---------------------------------------------------------------------+ | CPI-C CALL | OSI TP SERVICE | | PARAMETERS AND CONVERSATION CHARACTERISTICS | PARAMETERS | +----------------------------------------------------------+---------------------------------------------------------------------+ | IF: Confirmation = true on TP-BEGIN-DIALOGUE indication | | AND it is the first activity on the conversation following Accept_Conversation or Accept_Incoming | +----------------------------------------------------------+---------------------------------------------------------------------+ | CMRCV - Receive | TP-BEGIN-DIALOGUE response | | = accepted | Result | | initialization_data (characteristic) | User-Data | +----------------------------------------------------------+---------------------------------------------------------------------+ +----------------------------------------------------------+---------------------------------------------------------------------+ | IF: sync_level = CM_SYNC_POINT_NO_CONFIRM | | AND transaction_control = CM_UNCHAINED_TRANSACTIONS | | AND begin_transaction = CM_BEGIN_IMPLICIT | | AND it is the first activity on the conversation following the start of the current transaction | +----------------------------------------------------------+---------------------------------------------------------------------+ | CMRCV - Receive | TP-BEGIN-TRANSACTION request | | | (no parameters) | +----------------------------------------------------------+---------------------------------------------------------------------+ +--------------------------------------------------------------------------------------------------------------------------------+ | Table 72. CMSEND - Send_Data Mapping | +---------------------------------------------------+----------------------------------------------------------------------------+ | CPI-C CALL | OSI TP SERVICE | | PARAMETERS AND CONVERSATION CHARACTERISTICS | PARAMETERS | +---------------------------------------------------+----------------------------------------------------------------------------+ | IF: send_type = CM_BUFFER_DATA | +---------------------------------------------------+----------------------------------------------------------------------------+ | | (See notes 1 and 2 at end of table.) | | CMSEND - Send_Data | (TP-DATA request) UD-TRANSFER request | | buffer (parameter) | User-Data | +---------------------------------------------------+----------------------------------------------------------------------------+ +---------------------------------------------------+----------------------------------------------------------------------------+ | IF: send_type = CM_SEND_AND_FLUSH | +---------------------------------------------------+----------------------------------------------------------------------------+ | | (See notes 1 and 2 at end of table.) | | CMSEND - Send_Data | (TP-DATA request) UD-TRANSFER request | | buffer (parameter) | User-Data | +---------------------------------------------------+----------------------------------------------------------------------------+ +---------------------------------------------------+----------------------------------------------------------------------------+ | IF: send_type = CM_SEND_AND_DEALLOCATE | | AND deallocate_type = CM_DEALLOCATE_SYNC_LEVEL | | AND sync_level = CM_NONE | +---------------------------------------------------+----------------------------------------------------------------------------+ | | (See note 1 at end of table.) | | CMSEND - Send_Data | (TP-DATA request) UD-TRANSFER request | | buffer (parameter) | User-Data | | | TP-END-DIALOGUE request | | =false | Confirmation | | | (and TP-END-DIALOGUE indication | | =false | Confirmation | | | IF (TP-END-DIALOGUE or TP-*-ABORT indication) | | | has not been processed) | +---------------------------------------------------+----------------------------------------------------------------------------+ +---------------------------------------------------+----------------------------------------------------------------------------+ | IF: send_type = CM_SEND_AND_DEALLOCATE | | AND deallocate_type = CM_DEALLOCATE_SYNC_LEVEL | | AND sync_level = CM_SYNC_POINT_NO_CONFIRM | | AND the conversation is included in the current transaction | +---------------------------------------------------+----------------------------------------------------------------------------+ | | (See notes 1 and 2 at end of table.) | | CMSEND - Send_Data | (TP-DATA request) UD-TRANSFER request | | buffer (parameter) | User-Data | | | TP-DEFERRED-END-DIALOGUE request | | | (no parameters) | +---------------------------------------------------+----------------------------------------------------------------------------+ +---------------------------------------------------+----------------------------------------------------------------------------+ | IF: send_type = CM_SEND_AND_DEALLOCATE | | AND deallocate_type = CM_DEALLOCATE_SYNC_LEVEL | | AND sync_level = CM_SYNC_POINT_NO_CONFIRM | | AND ((transaction_control = CM_UNCHAINED_TRANSACTIONS | | AND the conversation is NOT currently included in a transaction | +---------------------------------------------------+----------------------------------------------------------------------------+ | | (See note 1 at end of table.) | | CMSEND - Send_Data | (TP-DATA request) UD-TRANSFER request | | buffer (parameter) | User-Data | | | TP-END-DIALOGUE request | | =false | Confirmation | | | (and TP-END-DIALOGUE indication | | =false | Confirmation | | | IF (TP-END-DIALOGUE or TP-*-ABORT indication) | | | has not been processed) | +---------------------------------------------------+----------------------------------------------------------------------------+ +---------------------------------------------------+----------------------------------------------------------------------------+ | IF: send_type = CM_SEND_AND_DEALLOCATE | | AND deallocate_type = CM_DEALLOCATE_FLUSH | +---------------------------------------------------+----------------------------------------------------------------------------+ | | (See note 1 at end of table.) | | CMSEND - Send_Data | (TP-DATA request) UD-TRANSFER request | | buffer (parameter) | User-Data | | | TP-END-DIALOGUE request | | =false | Confirmation | | | (and TP-END-DIALOGUE indication | | =false | Confirmation | | | IF (TP-END-DIALOGUE or TP-*-ABORT indication) | | | has not been processed) | +---------------------------------------------------+----------------------------------------------------------------------------+ +---------------------------------------------------+----------------------------------------------------------------------------+ | IF: send_type = CM_SEND_AND_DEALLOCATE | | AND deallocate_type = CM_DEALLOCATE_CONFIRM | +---------------------------------------------------+----------------------------------------------------------------------------+ | | (See note 1 at end of table.) | | CMSEND - Send_Data | (TP-DATA request) UD-TRANSFER request | | buffer (parameter) | User-Data. | | | IF no collision with CM_ERROR_* OR (ok,(*,jt)) OR (ok,(*,cd)) | | | TP-END-DIALOGUE request | | =true | Confirmation | | | OTHERWISE return, respectively, | | | CM_DEALLOC_CONFIRM_REJECT (S), OR | | | TP-U-ABORT request (Rollback = true), | | | CM_DEALLOCATED_ABEND.begin_transaction_collision (R) and | | | CM_DEALLOCATED_ABEND.begin_transaction_collision (S), OR | | | TP-U-ABORT request (Rollback = false), | | | CM_DEALLOCATED_ABEND.dealloc_confirm_collision (R) and | | | CM_DEALLOCATED_ABEND.dealloc_confirm_collision (S). | | | If collision results in a return code to the Receive call, | | | replace the status_received value that caused the collision. | +---------------------------------------------------+----------------------------------------------------------------------------+ +---------------------------------------------------+----------------------------------------------------------------------------+ | IF: send_type = CM_SEND_AND_DEALLOCATE | | AND deallocate_type = CM_DEALLOCATE_ABEND | +---------------------------------------------------+----------------------------------------------------------------------------+ | | (See notes 1 and 2 at end of table.) | | CMSEND - Send_Data | (TP-DATA request) UD-TRANSFER request | | buffer (parameter) | User-Data | | | TP-U-ABORT request | | log_data (characteristic) | User-Data | +---------------------------------------------------+----------------------------------------------------------------------------+ +---------------------------------------------------+----------------------------------------------------------------------------+ | NOTES: | | | | NOTE 1: | | IF Confirmation = true on TP-BEGIN-DIALOGUE indication | | AND it is the first activity on the conversation following Accept_Conversation or Accept_Incoming | | THEN the identified OSI TP Service primitives will be preceded by TP-BEGIN-DIALOGUE response | | (Result = accepted and User-Data = initialization_data (characteristic)). | | | | NOTE 2: | | IF sync_level = CM_SYNC_POINT_NO_CONFIRM | | AND transaction_control = CM_UNCHAINED_TRANSACTIONS | | AND begin_transaction = CM_BEGIN_IMPLICIT | | AND the Send_Data call is the first activity on the conversation following the start of the current transaction | | THEN the identified OSI TP Service primitives are proceded by a TP-BEGIN-TRANSACTION request. | +--------------------------------------------------------------------------------------------------------------------------------+ +--------------------------------------------------------------------------------------------------------------------------------+ | Table 73. CMSERR - Send_Error Mapping | +----------------------------------------------------------+---------------------------------------------------------------------+ | CPI-C CALL | OSI TP SERVICE | | PARAMETERS AND CONVERSATION CHARACTERISTICS | PARAMETERS | +----------------------------------------------------------+---------------------------------------------------------------------+ | IF: Confirmation = true on TP-BEGIN-DIALOGUE indication | | AND it is the first activity on the conversation following Accept_Conversation or Accept_Incoming | +----------------------------------------------------------+---------------------------------------------------------------------+ | CMSERR - Send_Error | TP-BEGIN-DIALOGUE response | | = accepted | Result | | initialization_data (characteristic) | User-Data | | | TP-U-ERROR request | | | (no parameters) | +----------------------------------------------------------+---------------------------------------------------------------------+ +----------------------------------------------------------+---------------------------------------------------------------------+ | IF: sync_level = CM_SYNC_POINT_NO_CONFIRM | | AND transaction_control = CM_UNCHAINED_TRANSACTIONS | | AND begin_transaction = CM_BEGIN_IMPLICIT | | AND it is the first activity on the conversation following the start of the current transaction | +----------------------------------------------------------+---------------------------------------------------------------------+ | CMSERR - Send_Error | TP-BEGIN-TRANSACTION request | | | (no parameters) | | | TP-U-ERROR request | | | (no parameters) | +----------------------------------------------------------+---------------------------------------------------------------------+ +----------------------------------------------------------+---------------------------------------------------------------------+ | OTHERWISE: | +----------------------------------------------------------+---------------------------------------------------------------------+ | CMSERR - Send_Error | TP-U-ERROR request | | | (no parameters) | +----------------------------------------------------------+---------------------------------------------------------------------+ Mapping OSI TP Services to CPI-C for Full-Duplex Conversations The following tables present the complete mapping from the OSI TP services to CPI-C for full-duplex conversations. The following conventions are used within the tables in this section: - The parameter is not applicable because of other parameter settings. * The parameter is not directly supported by CPI-C. =XXX The value "xxx" is expected by CPI-C. (R) The return code is returned on the Receive call. (S) The return code is returned on calls associated with Send queue. X (R) [+ Y (S)] If x is returned before y, then y need not be returned. If y is returned before x, then x must also be returned. A.B "a" is the return code and "b" is the secondary information associated with the return code. +--------------------------------------------------------------------------------------------------------------------------------+ | Table 74. Mapping OSI TP Services to CPI-C Calls, Parameters, and Conversation Characteristics | +---------------------------------------------------+----------------------------------------------------------------------------+ | OSI TP SERVICE | CPI-C CALLS, PARAMETERS, AND CHARACTERISTICS | +---------------------------------------------------+----------------------------------------------------------------------------+ | (TP-DATA indication) UD-TRANSFER indication | Completes an outstanding | | | CMRCV - Receive | +---------------------------------------------------+----------------------------------------------------------------------------+ | TP-BEGIN-DIALOGUE indication | Completes an outstanding | | (See Table 57 for details.) | CMACCP - Accept_Conversation | | | CMACCI - Accept_Incoming | | | and maps to conversation characteristics. | +---------------------------------------------------+----------------------------------------------------------------------------+ | TP-BEGIN-DIALOGUE confirm | Completes an outstanding | | (See Table 58 for details.) | CMRCV - Receive | | | and maps to | | | control_information_received values | +---------------------------------------------------+----------------------------------------------------------------------------+ | TP-END-DIALOGUE indication | Completes an outstanding | | (See Table 59 for details.) | CMRCV - Receive | | | and maps to status_received or return_code values. | +---------------------------------------------------+----------------------------------------------------------------------------+ | TP-END-DIALOGUE confirm | Completes an outstanding | | (no parameters) | CMSEND - Send_Data | | | CMDEAL - Deallocate | | | and maps to | | | return_code = CM_OK (S) | | | and CM_DEALLOCATED_NORMAL (R) | +---------------------------------------------------+----------------------------------------------------------------------------+ | TP-U-ERROR indication | Completes an outstanding | | (no parameters) | CMRCV - Receive | | | CMDEAL - Deallocate(Confirm) | | | and maps to | | | return_code = CM_PROGRAM_ERROR_PURGING (R) | | | (IF CMDEAL - Deallocate(Confirm) is being processed, | | | also maps to | | | CM_DEALLOC_CONFIRM_REJECT (S)) | +---------------------------------------------------+----------------------------------------------------------------------------+ | TP-U-ABORT indication | Completes an outstanding | | (See Table 60 for details.) | CMRCV - Receive | | | and maps to return_code values. | +---------------------------------------------------+----------------------------------------------------------------------------+ | TP-P-ABORT indication | Completes an outstanding | | (See Table 61 for details.) | CMRCV - Receive | | | CMDEAL - Deallocate(Confirm) | | | and maps to return_code values. | +---------------------------------------------------+----------------------------------------------------------------------------+ | TP-BEGIN-TRANSACTION indication | IF collision with outstanding CMDEAL(Confirm), | | (no parameters) | THEN completes the outstanding | | | CMDEAL - Deallocate(Confirm) | | | and maps to | | | return_code=CM_DEALLOCATED_ABEND.begin_transaction_collision (R) | | | and CM_DEALLOCATED_ABEND.begin_transaction_collision (S) | | | and TP-U-ABORT request (Rollback = true) | | | ELSE if conversation_state = CM_SEND_RECEIVE_STATE | | | THEN completes an outstanding | | | CMRCV - Receive | | | and maps to | | | status_received = CM_JOIN_TRANSACTION | +---------------------------------------------------+----------------------------------------------------------------------------+ | TP-DEFERRED-END-DIALOGUE indication | Maps to status_received values. | | (See Table 62 for details.) | | +---------------------------------------------------+----------------------------------------------------------------------------+ | TP-PREPARE indication | Completes an outstanding | | (See Table 62 for details.) | CMRCV - Receive | | | and maps to status_received values. | +---------------------------------------------------+----------------------------------------------------------------------------+ | TP-READY indication | Completes an outstanding | | (no parameters) | CMRCV - Receive | | | and maps to | | | status_received = CM_PREPARE_OK. | +---------------------------------------------------+----------------------------------------------------------------------------+ | TP-COMMIT indication | (Handled by a resource recovery component.) | +---------------------------------------------------+----------------------------------------------------------------------------+ | TP-COMMIT-COMPLETE indication | (Handled by a resource recovery component.) | +---------------------------------------------------+----------------------------------------------------------------------------+ | TP-ROLLBACK indication | Maps to | | (no parameters) | return_code = CM_TAKE_BACKOUT. | +---------------------------------------------------+----------------------------------------------------------------------------+ | TP-ROLLBACK-COMPLETE indication | (Handled by a resource recovery component.) | +---------------------------------------------------+----------------------------------------------------------------------------+ | TP-HEURISTIC-REPORT indication | (Handled by a resource recovery component.) | +---------------------------------------------------+----------------------------------------------------------------------------+ +--------------------------------------------------------------------------------------------------------------------------------+ | Table 75. TP-BEGIN-DIALOGUE indication Mapping | +---------------------------------------------------+----------------------------------------------------------------------------+ | OSI TP SERVICE | CPI-C CALLS, PARAMETERS, AND CHARACTERISTICS | | PARAMETERS | | +---------------------------------------------------+----------------------------------------------------------------------------+ | TP-BEGIN-DIALOGUE indication | Maps to conversation characteristics: | | Initiating-AP-Title | AP_title (characteristic) | | Initiating-API-Identifier | * | | Initiating-AE-Qualifier | AE_qualifier (characteristic) | | Initiating-AEI-Identifier | * | | Initiating-TPSU-Title | TP_name (characteristic) | | Functional-Units | transaction_control (characteristic), | | | send_receive_mode, and sync_level | | Begin-Transaction | | | true | Completes an outstanding | | | CMRCV - Receive | | | and maps to | | | status_received = CM_JOIN_TRANSACTION; | | | (also available through a resource | | | recovery interface) | | false | *(through a resource recovery interface) | | Confirmation | *(confirmation is implicit) | | User-Data | initialization_data (characteristic) | +---------------------------------------------------+----------------------------------------------------------------------------+ +--------------------------------------------------------------------------------------------------------------------------------+ | Table 76. TP-BEGIN-DIALOGUE confirm Mapping | +---------------------------------------------------+----------------------------------------------------------------------------+ | OSI TP SERVICE | CPI-C CALLS, PARAMETERS, AND CHARACTERISTICS | | PARAMETERS | | +---------------------------------------------------+----------------------------------------------------------------------------+ | IF: Result = accepted | | AND User-Data is not present | +---------------------------------------------------+----------------------------------------------------------------------------+ | TP-BEGIN-DIALOGUE confirm | Maps to control_information_received = | | | CM_ALLOCATE_CONFIRMED. | | Functional-Units | * | | Diagnostic | - | | Rollback | - | | User-Data | - | +---------------------------------------------------+----------------------------------------------------------------------------+ +---------------------------------------------------+----------------------------------------------------------------------------+ | IF: Result = accepted | | AND User-Data is present | +---------------------------------------------------+----------------------------------------------------------------------------+ | TP-BEGIN-DIALOGUE confirm | Maps to control_information_received = | | | CM_ALLOCATE_CONFIRMED_WITH_DATA. | | Functional-Units | * | | Diagnostic | - | | Rollback | - | | User-Data | initialization_data (characteristic) | +---------------------------------------------------+----------------------------------------------------------------------------+ +---------------------------------------------------+----------------------------------------------------------------------------+ | IF: Result = rejected(user) | | AND User-Data is not present | +---------------------------------------------------+----------------------------------------------------------------------------+ | TP-BEGIN-DIALOGUE confirm | Maps to return_code values. | | Functional-Units | * | | Diagnostic | - | | Rollback | | | true | CM_DEALLOCATED_ABEND_BO (S or R) | | false | CM_DEALLOCATED_ABEND (R) | | | [+ CM_DEALLOCATED_ABEND (S)] | | User-Data | initialization_data (characteristic) | +---------------------------------------------------+----------------------------------------------------------------------------+ +---------------------------------------------------+----------------------------------------------------------------------------+ | IF: Result = rejected(user) | | AND User-Data is present | +---------------------------------------------------+----------------------------------------------------------------------------+ | TP-BEGIN-DIALOGUE confirm | Maps to control_information_received = | | | CM_ALLOCATE_REJECTED_WITH_DATA | | Functional-Units | * | | Diagnostic | - | | Rollback | - | | User-Data | initialization_data (characteristic) | | | NOTE: CM_DEALLOCATED_ABEND will be returned to the | | | next call. | +---------------------------------------------------+----------------------------------------------------------------------------+ +---------------------------------------------------+----------------------------------------------------------------------------+ | IF: Result = rejected(provider) | | AND Rollback = true | +---------------------------------------------------+----------------------------------------------------------------------------+ | TP-BEGIN-DIALOGUE confirm | Maps to return_code values. | | Functional-Units | * | | Diagnostic | | | recipient-unknown | CM_RESOURCE_FAIL_NO_RETRY_BO (S or R) | | recipient-tpsu-title-unknown | CM_TPN_NOT_RECOGNIZED (R) | | | [+ CM_ALLOCATION_ERROR (S)] | | tpsu-not-available(permanent) | CM_TP_NOT_AVAILABLE_NO_RETRY (R) | | | [+ CM_ALLOCATION_ERROR (S)] | | tpsu-not-available(transient) | CM_TP_NOT_AVAILABLE_RETRY (R) | | | [+ CM_ALLOCATION_ERROR (S)] | | recipient-tpsu-title-required | CM_TPN_NOT_RECOGNIZED (R) | | | [+ CM_ALLOCATION_ERROR (S)] | | functional-unit-not-supported | CM_SYNC_LEVEL_NOT_SUPPORTED_SYS (R) or | | | CM_SEND_RECEIVE_MODE_NOT_SUPPORTED (R), | | | [+ CM_ALLOCATION_ERROR (S)] | | functional-unit-combo-not-supported | CM_SYNC_LEVEL_NOT_SUPPORTED_SYS (R) and/or | | | CM_SEND_RECEIVE_MODE_NOT_SUPPORTED (R), | | | [+ CM_ALLOCATION_ERROR (S)] | | no-reason-given | CM_RESOURCE_FAIL_NO_RETRY_BO (S or R) | | User-Data | initialization_data (characteristic) | +---------------------------------------------------+----------------------------------------------------------------------------+ +---------------------------------------------------+----------------------------------------------------------------------------+ | IF: Result = rejected(provider) | | AND Rollback = false | +---------------------------------------------------+----------------------------------------------------------------------------+ | TP-BEGIN-DIALOGUE confirm | Maps to return_code values. | | Functional-Units | * | | Diagnostic | | | recipient-unknown | CM_RESOURCE_FAILURE_NO_RETRY (R) | | | [+ CM_RESOURCE_FAILURE_NO_RETRY (S)] | | recipient-tpsu-title-unknown | CM_TPN_NOT_RECOGNIZED (R) | | | [+ CM_ALLOCATION_ERROR (S)] | | tpsu-not-available(permanent) | CM_TP_NOT_AVAILABLE_NO_RETRY (R) | | | [+ CM_ALLOCATION_ERROR(S)] | | tpsu-not-available(transient) | CM_TP_NOT_AVAILABLE_RETRY (R) | | | [+ CM_ALLOCATION_ERROR (S)] | | recipient-tpsu-title-required | CM_TPN_NOT_RECOGNIZED (R) | | | [+ CM_ALLOCATION_ERROR (S)] | | functional-unit-not-supported | CM_SYNC_LEVEL_NOT_SUPPORTED_SYS (R) or | | | CM_SEND_RECEIVE_MODE_NOT_SUPPORTED (R), | | | [+ CM_ALLOCATION_ERROR (S)] | | functional-unit-combo-not-supported | CM_SYNC_LEVEL_NOT_SUPPORTED_SYS (R) and/or | | | CM_SEND_RECEIVE_MODE_NOT_SUPPORTED (R), | | | [+ CM_ALLOCATION_ERROR (S)] | | no-reason-given | CM_RESOURCE_FAILURE_NO_RETRY (R) | | | [+ CM_RESOURCE_FAILURE_NO_RETRY (S)] | | User-Data | initialization_data (characteristic) | +---------------------------------------------------+----------------------------------------------------------------------------+ +--------------------------------------------------------------------------------------------------------------------------------+ | Table 77. TP-END-DIALOGUE indication Mapping | +---------------------------------------------------+----------------------------------------------------------------------------+ | OSI TP SERVICE | CPI-C CALLS, PARAMETERS, AND CHARACTERISTICS | | PARAMETERS | | +---------------------------------------------------+----------------------------------------------------------------------------+ | IF: Confirmation = true | +---------------------------------------------------+----------------------------------------------------------------------------+ | TP-END-DIALOGUE indication | IF no collision with CMSERR OR CMDEAL(C) OR CMINCL, | | | status_received = CM_CONFIRM_DEALLOCATE_RECEIVED | | | OTHERWISE, respectively, | | | no-op OR | | | CM_DEALLOCATED_ABEND.dealloc_confirm_collision (R) | | | [+ CM_DEALLOCATED_ABEND.dealloc_confirm_collision (S)], | | | and TP-U-ABORT request (Rollback = false) OR | | | CM_DEALLOCATED_ABEND_BO.dealloc_confirm_collision (S or R) | | | and TP-U-ABORT request (Rollback = false). | | (no parameters) | | +---------------------------------------------------+----------------------------------------------------------------------------+ +---------------------------------------------------+----------------------------------------------------------------------------+ | IF: Confirmation = false | +---------------------------------------------------+----------------------------------------------------------------------------+ | TP-END-DIALOGUE indication | return_code = CM_DEALLOCATED_NORMAL (R) | | | [+ CM_DEALLOCATED_NORMAL (S)] | | (no parameters) | | +---------------------------------------------------+----------------------------------------------------------------------------+ +--------------------------------------------------------------------------------------------------------------------------------+ | Table 78. TP-U-ABORT indication Mapping | +---------------------------------------------------+----------------------------------------------------------------------------+ | OSI TP SERVICE | CPI-C CALLS, PARAMETERS, AND CHARACTERISTICS | | PARAMETERS | | +---------------------------------------------------+----------------------------------------------------------------------------+ | IF: Rollback = true | +---------------------------------------------------+----------------------------------------------------------------------------+ | TP-U-ABORT indication | return_code = CM_DEALLOCATED_ABEND_BO (S or R) | | User-Data | log_data (characteristic) | +---------------------------------------------------+----------------------------------------------------------------------------+ +---------------------------------------------------+----------------------------------------------------------------------------+ | IF: Rollback = false | +---------------------------------------------------+----------------------------------------------------------------------------+ | TP-U-ABORT indication | return_code = CM_DEALLOCATED_ABEND (R) | | | [+ CM_DEALLOCATED_ABEND (S)] | | User-Data | log_data (characteristic) | +---------------------------------------------------+----------------------------------------------------------------------------+ +--------------------------------------------------------------------------------------------------------------------------------+ | Table 79. TP-P-ABORT indication Mapping | +---------------------------------------------------+----------------------------------------------------------------------------+ | OSI TP SERVICE | CPI-C CALLS, PARAMETERS, AND CHARACTERISTICS | | PARAMETERS | | +---------------------------------------------------+----------------------------------------------------------------------------+ | IF: Rollback = true | +---------------------------------------------------+----------------------------------------------------------------------------+ | TP-P-ABORT indication | Maps to return_code values: | | Diagnostic | | | permanent-failure | CM_RESOURCE_FAIL_NO_RETRY_BO (S or R) | | transient-failure | CM_RESOURCE_FAILURE_RETRY_BO (S or R) | | protocol-error | CM_RESOURCE_FAIL_NO_RETRY_BO (S or R) | | begin-transaction-reject | CM_INCLUDE_PARTNER_REJECTED_BO (S or R) | | end-dialogue-collision | - | | begin-transaction-end-dialogue-collision| CM_DEALLOCATED_ABEND_BO.dealloc_confirm_collision (S or R) | +---------------------------------------------------+----------------------------------------------------------------------------+ +---------------------------------------------------+----------------------------------------------------------------------------+ | IF: Rollback = false | +---------------------------------------------------+----------------------------------------------------------------------------+ | TP-P-ABORT indication | Maps to return_code values: | | Diagnostic | | | permanent-failure | CM_RESOURCE_FAILURE_NO_RETRY (R) | | | [+ CM_RESOURCE_FAILURE_NO_RETRY (S)] | | transient-failure | CM_RESOURCE_FAILURE_RETRY (R) | | | [+ CM_RESOURCE_FAILURE_RETRY (S)] | | protocol-error | CM_RESOURCE_FAILURE_NO_RETRY (R) | | | [+ CM_RESOURCE_FAILURE_NO_RETRY (S)] | | begin-transaction-reject | - | | end-dialogue-collision | CM_DEALLOCATED_ABEND.dealloc_confirm_collision (R) | | | [+ CM_DEALLOCATED_ABEND.dealloc_confirm_collision (S)] | | begin-transaction-end-dialogue-collision| CM_DEALLOCATED_ABEND.begin_transaction_collision (R) | | | [+CM_DEALLOCATED_ABEND.begin_transaction_collision (S)] | +---------------------------------------------------+----------------------------------------------------------------------------+ +--------------------------------------------------------------------------------------------------------------------------------+ | Table 80. TP-DEFERRED-END-DIALOGUE and TP-PREPARE indication Mapping | +---------------------------------------------------------------------+----------------------------------------------------------+ | OSI TP SERVICE | CPI-C CALLS, PARAMETERS, AND CHARACTERISTICS | | PARAMETERS | | +---------------------------------------------------------------------+----------------------------------------------------------+ | IF: a TP-DEFERRED-END-DIALOGUE indication has been received | +---------------------------------------------------------------------+----------------------------------------------------------+ | TP-PREPARE indication | status_received = CM_TAKE_COMMIT_DEALLOCATE | | Data-Permitted | = false | +---------------------------------------------------------------------+----------------------------------------------------------+ +---------------------------------------------------------------------+----------------------------------------------------------+ | IF: a TP-DEFERRED-END-DIALOGUE indication has NOT been received | +---------------------------------------------------------------------+----------------------------------------------------------+ | TP-PREPARE indication | status_received = CM_TAKE_COMMIT | | Data-Permitted | = false | +---------------------------------------------------------------------+----------------------------------------------------------+ Sequencing Rules and State Tables The sequencing rules and state tables for the CPI-C ASE are contained in Appendix C, "State Tables." CPI-C ASE Protocol Definition There are no additional protocol definitions required by the CPI-C ASE beyond those defined in ISO/IEC 10026, Parts 1-3. CPI-C ASE Structure and Encoding of APDUs There are no additional APDUs required by the CPI-C ASE beyond those defined in ISO/IEC 10026, Parts 1-3. ---------------------------------------------------------------------------------------------------------------------------------- Appendix E. Pseudonym Files This appendix contains sample pseudonym files for several programming languages. These pseudonym files are provided as a usability aid for the CPI Communications programmer. Because the file names and file contents differ from system to system, the samples shown in this appendix are representative but not complete. Customized pseudonym files may be provided on many systems that use CPI Communications. Sample pseudonym files are provided for the following programming languages: o Application Generator (CSP) o C o COBOL o FORTRAN o PL/I o REXX o RPG ------------------------------------------------------------------------------------ Application Generator Pseudonym File--as Implemented by Cross-System Product (CMCSP) The following CSP pseudonym file is provided in CSP/AD's external source format and must be imported into CSP/AD before it can be used to define CSP/AD working storage used by an application program. :EZEE 330 03/19/91 09:37:09 :group name = C$$CCPI date = '03/18/91' time = '13:47:19' refine = N desc = 'Setup CPI Communications Pseudonyms -- SC31-6180-01'. :stmts. ; ; /* ** *** CPI Communications Variable Initialization *********** ; ; /* ** *** AE_qualifier_format, AP_title_format ***************** MOVE 0 TO CM_DN; MOVE 1 TO CM_OID; MOVE 2 TO CM_INT_DIGITS; ; ; /* ** *** allocate_confirm ************************************* MOVE 0 TO CM_ALLOCATE_NO_CONFIRM; MOVE 1 TO CM_ALLOCATE_CONFIRM; ; ; /* ** *** begin_transaction ************************************ MOVE 0 TO CM_BEGIN_IMPLICIT; MOVE 1 TO CM_BEGIN_EXPLICIT; ; ; /* ** *** call_ID ********************************************** MOVE 1 TO CM_CMACCI; MOVE 2 TO CM_CMACCP; MOVE 3 TO CM_CMALLC; MOVE 4 TO CM_CMCANC; MOVE 5 TO CM_CMCFM; MOVE 6 TO CM_CMCFMD; MOVE 7 TO CM_CMCNVI; MOVE 8 TO CM_CMCNVO; MOVE 9 TO CM_CMDEAL; MOVE 10 TO CM_CMDFDE; MOVE 11 TO CM_CMEACN; MOVE 12 TO CM_CMEAEQ; MOVE 13 TO CM_CMEAPT; MOVE 14 TO CM_CMECS; MOVE 15 TO CM_CMECT; MOVE 16 TO CM_CMECTX; MOVE 17 TO CM_CMEID; MOVE 18 TO CM_CMEMBS; MOVE 19 TO CM_CMEMN; MOVE 20 TO CM_CMEPID; MOVE 21 TO CM_CMEPLN; MOVE 22 TO CM_CMESI; MOVE 23 TO CM_CMESL; MOVE 24 TO CM_CMESRM; MOVE 25 TO CM_CMESUI; MOVE 26 TO CM_CMETC; MOVE 27 TO CM_CMETPN; MOVE 28 TO CM_CMFLUS; MOVE 29 TO CM_CMINCL; MOVE 30 TO CM_CMINIC; MOVE 31 TO CM_CMINIT; MOVE 32 TO CM_CMPREP; MOVE 33 TO CM_CMPTR; MOVE 34 TO CM_CMRCV; MOVE 35 TO CM_CMRCVX; MOVE 36 TO CM_CMRLTP; MOVE 37 TO CM_CMRTS; MOVE 38 TO CM_CMSAC; MOVE 39 TO CM_CMSACN; MOVE 40 TO CM_CMSAEQ; MOVE 41 TO CM_CMSAPT; MOVE 42 TO CM_CMSBT; MOVE 43 TO CM_CMSCSP; MOVE 44 TO CM_CMSCST; MOVE 45 TO CM_CMSCSU; MOVE 46 TO CM_CMSCT; MOVE 47 TO CM_CMSCU; MOVE 48 TO CM_CMSDT; MOVE 49 TO CM_CMSED; MOVE 50 TO CM_CMSEND; MOVE 51 TO CM_CMSERR; MOVE 52 TO CM_CMSF; MOVE 53 TO CM_CMSID; MOVE 54 TO CM_CMSLD; MOVE 55 TO CM_CMSLTP; MOVE 56 TO CM_CMSMN; MOVE 57 TO CM_CMSNDX; MOVE 58 TO CM_CMSPDP; MOVE 59 TO CM_CMSPID; MOVE 60 TO CM_CMSPLN; MOVE 61 TO CM_CMSPM; MOVE 62 TO CM_CMSPTR; MOVE 63 TO CM_CMSQCF; MOVE 64 TO CM_CMSQPM; MOVE 65 TO CM_CMSRC; MOVE 66 TO CM_CMSRT; MOVE 67 TO CM_CMSSL; MOVE 68 TO CM_CMSSRM; MOVE 69 TO CM_CMSST; MOVE 70 TO CM_CMSTC; MOVE 71 TO CM_CMSTPN; MOVE 72 TO CM_CMTRTS; MOVE 73 TO CM_CMWAIT; MOVE 74 TO CM_CMWCMP; ; ; /* ** *** confirmation_urgency ********************************* MOVE 0 TO CM_CONFIRMATION_NOT_URGENT; MOVE 1 TO CM_CONFIRMATION_URGENT; ; ; /* *** control_informaton_received ***************************** ; /* see requested_to_send_received ; ; /* ** *** conversation_queue *********************************** MOVE 0 TO CM_INITIALIZATION_QUEUE MOVE 1 TO CM_SEND_QUEUE MOVE 2 TO CM_RECEIVE_QUEUE MOVE 3 TO CM_SEND_RECEIVE_QUEUE MOVE 4 TO CM_EXPEDITED_SEND_QUEUE MOVE 5 TO CM_EXPEDITED_RECEIVE_QUEUE ; ; /* ** *** conversation_state *********************************** MOVE 2 TO CM_INITIALIZE_STATE; MOVE 3 TO CM_SEND_STATE; MOVE 4 TO CM_RECEIVE_STATE; MOVE 5 TO CM_SEND_PENDING_STATE; MOVE 6 TO CM_CONFIRM_STATE; MOVE 7 TO CM_CONFIRM_SEND_STATE; MOVE 8 TO CM_CONFIRM_DEALLOCATE_STATE; MOVE 9 TO CM_DEFER_RECEIVE_STATE; MOVE 10 TO CM_DEFER_DEALLOCATE_STATE; MOVE 11 TO CM_SYNC_POINT_STATE; MOVE 12 TO CM_SYNC_POINT_SEND_STATE; MOVE 13 TO CM_SYNC_POINT_DEALLOCATE_STATE; MOVE 14 TO CM_INITIALIZE_INCOMING_STATE; MOVE 15 TO CM_SEND_ONLY_STATE; MOVE 16 TO CM_RECEIVE_ONLY_STATE; MOVE 17 TO CM_SEND_RECEIVE_STATE; MOVE 18 TO CM_PREPARED_STATE; ; ; /* ** *** conversation_type ************************************ ; MOVE 0 TO CM_BASIC_CONVERSATION; MOVE 1 TO CM_MAPPED_CONVERSATION; ; ; /* ** *** conversation_security_type**************************** ; MOVE 0 TO CM_SECURITY_NONE; MOVE 1 TO CM_SECURITY_SAME; MOVE 2 TO CM_SECURITY_PROGRAM; MOVE 3 TO CM_SECURITY_DISTRIBUTED; MOVE 4 TO CM_SECURITY_MUTUAL; MOVE 5 TO CM_SECURITY_PROGRAM_STRONG; ; ; /* ** *** return_code, conversation_return_code **************** ; MOVE 0 TO CM_OK; MOVE 1 TO CM_ALLOCATE_FAILURE_NO_RETRY; MOVE 2 TO CM_ALLOCATE_FAILURE_RETRY; MOVE 3 TO CM_CONVERSATION_TYPE_MISMATCH; MOVE 5 TO CM_PIP_NOT_SPECIFIED_CORRECTLY; MOVE 6 TO CM_SECURITY_NOT_VALID; MOVE 7 TO CM_SYNC_LVL_NOT_SUPPORTED_LU; MOVE 7 TO CM_SYNC_LVL_NOT_SUPPORTED_SYS; MOVE 8 TO CM_SYNC_LVL_NOT_SUPPORTED_PGM; MOVE 9 TO CM_TPN_NOT_RECOGNIZED; MOVE 10 TO CM_TP_NOT_AVAILABLE_NO_RETRY; MOVE 11 TO CM_TP_NOT_AVAILABLE_RETRY; MOVE 17 TO CM_DEALLOCATED_ABEND; MOVE 18 TO CM_DEALLOCATED_NORMAL; MOVE 19 TO CM_PARAMETER_ERROR; MOVE 20 TO CM_PRODUCT_SPECIFIC_ERROR; MOVE 21 TO CM_PROGRAM_ERROR_NO_TRUNC; MOVE 22 TO CM_PROGRAM_ERROR_PURGING; MOVE 23 TO CM_PROGRAM_ERROR_TRUNC; MOVE 24 TO CM_PROGRAM_PARAMETER_CHECK; MOVE 25 TO CM_PROGRAM_STATE_CHECK; MOVE 26 TO CM_RESOURCE_FAILURE_NO_RETRY; MOVE 27 TO CM_RESOURCE_FAILURE_RETRY; MOVE 28 TO CM_UNSUCCESSFUL; MOVE 30 TO CM_DEALLOCATED_ABEND_SVC; MOVE 31 TO CM_DEALLOCATED_ABEND_TIMER; MOVE 32 TO CM_SVC_ERROR_NO_TRUNC; MOVE 33 TO CM_SVC_ERROR_PURGING; MOVE 34 TO CM_SVC_ERROR_TRUNC; MOVE 35 TO CM_OPERATION_INCOMPLETE; MOVE 36 TO CM_SYSTEM_EVENT; MOVE 37 TO CM_OPERATION_NOT_ACCEPTED; MOVE 38 TO CM_CONVERSATION_ENDING; MOVE 39 TO CM_SEND_RCV_MODE_NOT_SUPPORTED; MOVE 40 TO CM_BUFFER_TOO_SMALL; MOVE 41 TO CM_EXP_DATA_NOT_SUPPORTED; MOVE 42 TO CM_DEALLOC_CONFIRM_REJECT; MOVE 43 TO CM_ALLOCATION_ERROR; MOVE 44 TO CM_RETRY_LIMIT_EXCEEDED; MOVE 45 TO CM_NO_SECONDARY_INFORMATION; MOVE 46 TO CM_SECURITY_NOT_SUPPORTED; MOVE 47 TO CM_SECURITY_MUTUAL_FAILED; MOVE 48 TO CM_CALL_NOT_SUPPORTED; MOVE 49 TO CM_PARM_VALUE_NOT_SUPPORTED; MOVE 100 TO CM_TAKE_BACKOUT; MOVE 130 TO CM_DEALLOCATED_ABEND_BO; MOVE 131 TO CM_DEALLOCATED_ABEND_SVC_BO; MOVE 132 TO CM_DEALLOCATED_ABEND_TIMER_BO; MOVE 133 TO CM_RESOURCE_FAIL_NO_RETRY_BO; MOVE 134 TO CM_RESOURCE_FAILURE_RETRY_BO; MOVE 135 TO CM_DEALLOCATED_NORMAL_BO; MOVE 136 TO CM_CONV_DEALLOC_AFTER_SYNCPT; MOVE 137 TO CM_INCLUDE_PARTNER_REJECT_BO; ; ; /* *** data_received ******************************************* ; MOVE 0 TO CM_NO_DATA_RECEIVED; MOVE 1 TO CM_DATA_RECEIVED; MOVE 2 TO CM_COMPLETE_DATA_RECEIVED; MOVE 3 TO CM_INCOMPLETE_DATA_RECEIVED; ; ; /* *** deallocate_type ***************************************** ; MOVE 0 TO CM_DEALLOCATE_SYNC_LEVEL; MOVE 1 TO CM_DEALLOCATE_FLUSH; MOVE 2 TO CM_DEALLOCATE_CONFIRM; MOVE 3 TO CM_DEALLOCATE_ABEND; ; ; /* *** directory_encoding ************************************** ; MOVE 0 TO CM_DEFAULT_ENCODING; MOVE 1 TO CM_UNICODE_ENCODING; ; ; /* *** directory_syntax **************************************** ; MOVE 0 TO CM_DEFAULT_SYNTAX; MOVE 1 TO CM_DCE_SYNTAX; MOVE 2 TO CM_XDS_SYNTAX; MOVE 3 TO CM_NDS_SYNTAX; ; ; /* *** error_direction ***************************************** ; MOVE 0 TO CM_RECEIVE_ERROR; MOVE 1 TO CM_SEND_ERROR; ; ; /* *** expedited_receive_type ********************************** ; /* see receive_type ; ; /* *** fill **************************************************** ; MOVE 0 TO CM_FILL_LL; MOVE 1 TO CM_FILL_BUFFER; ; ; /* *** partner_ID_scope **************************************** ; MOVE 0 TO CM_EXPLICIT; MOVE 1 TO CM_REFERENCE; ; ; /* *** partner_ID_type ***************************************** ; MOVE 0 TO CM_DISTINGUISHED_NAME; MOVE 1 TO CM_LOCAL_DISTINGUISHED_NAME; MOVE 2 TO CM_PROGRAM_FUNCTION_ID; MOVE 3 TO CM_OSI_TPSU_TITLE_OID; MOVE 4 TO CM_PROGRAM_BINDING; ; ; /* *** prepare_data_permitted ********************************** ; MOVE 0 TO CM_PREPARE_DATA_NOT_PERMITTED; MOVE 1 TO CM_PREPARE_DATA_PERMITTED; ; ; /* *** prepare_to_receive_type ********************************* ; MOVE 0 TO CM_PREP_TO_RECEIVE_SYNC_LEVEL; MOVE 1 TO CM_PREP_TO_RECEIVE_FLUSH; MOVE 2 TO CM_PREP_TO_RECEIVE_CONFIRM; ; ; /* *** processing_mode, queue_processing_mode ****************** ; MOVE 0 TO CM_BLOCKING; MOVE 1 TO CM_NON_BLOCKING; ; ; /* *** receive_type, expedited_receive_type ******************** ; MOVE 0 TO CM_RECEIVE_AND_WAIT; MOVE 1 TO CM_RECEIVE_IMMEDIATE; ; ; /* *** request_to_send_received, control_information_received ** ; MOVE 0 TO CM_NO_CONTROL_INFO_RECEIVED; MOVE 0 TO CM_REQ_TO_SEND_NOT_RECEIVED; MOVE 1 TO CM_REQ_TO_SEND_RECEIVED; MOVE 2 TO CM_ALLOCATE_CONFIRMED; MOVE 3 TO CM_ALLOCATE_CONFIRMED_WITH_DATA; MOVE 4 TO CM_ALLOCATE_REJECTED_WITH_DATA; MOVE 5 TO CM_EXPEDITED_DATA_AVAILABLE; MOVE 6 TO CM_RTS_RCVD_AND_EXP_DATA_AVAIL; ; ; /* *** return_control ****************************************** ; MOVE 0 TO CM_WHEN_SESSION_ALLOCATED; MOVE 1 TO CM_IMMEDIATE; ; ; /* *** send_receive_mode *************************************** ; MOVE 0 TO CM_HALF_DUPLEX; MOVE 1 TO CM_FULL_DUPLEX; ; ; /* *** send_type *********************************************** ; MOVE 0 TO CM_BUFFER_DATA; MOVE 1 TO CM_SEND_AND_FLUSH; MOVE 2 TO CM_SEND_AND_CONFIRM; MOVE 3 TO CM_SEND_AND_PREP_TO_RECEIVE; MOVE 4 TO CM_SEND_AND_DEALLOCATE; ; ; /* *** status_received ***************************************** ; MOVE 0 TO CM_NO_STATUS_RECEIVED; MOVE 1 TO CM_SEND_RECEIVED; MOVE 2 TO CM_CONFIRM_RECEIVED; MOVE 3 TO CM_CONFIRM_SEND_RECEIVED; MOVE 4 TO CM_CONFIRM_DEALLOC_RECEIVED; MOVE 5 TO CM_TAKE_COMMIT; MOVE 6 TO CM_TAKE_COMMIT_SEND; MOVE 7 TO CM_TAKE_COMMIT_DEALLOCATE; MOVE 8 TO CM_TAKE_COMMIT_DATA_OK; MOVE 9 TO CM_TAKE_COMMIT_SEND_DATA_OK; MOVE 10 TO CM_TAKE_COMMIT_DEALLOC_DATA_OK; MOVE 11 TO CM_PREPARE_OK; MOVE 12 TO CM_JOIN_TRANSACTION; ; ; /* *** sync_level ********************************************** ; MOVE 0 TO CM_NONE; MOVE 1 TO CM_CONFIRM; MOVE 2 TO CM_SYNC_POINT; MOVE 3 TO CM_SYNC_POINT_NO_CONFIRM; ; ; /* *** transaction_control ************************************* ; MOVE 0 TO CM_CHAINED_TRANSACTIONS; MOVE 1 TO CM_UNCHAINED_TRANSACTIONS; ; ; :estmts. :egroup. :EZEE 330 03/19/91 09:37:16 :record name = C$$CPIC date = '03/19/91' time = '09:36:34' org = WORKSTOR scope = GLOBAL :prol. CSP Definitions for CPI Commmunications variables and values. This working storage definition defines the variables to be used with the communications CPI calls. Refer to the communications CPI call interface documentation for their use. Each declared constant value is defined in this working storage record as a LEVEL 10 item binary with a length of 4 bytes. Values used as parameters for the CPI Communications call statements must be defined in CSP as LEVEL 77 items, and are included for the user's convenience. Since CSP 3.3.0 supports the long name formats shown in the SAA CPI Communications manual, the definitions are shipped in this release using the same names as defined within the CPI Communications manual. The 3.2.2 release of CSP did not support the long names, and 8-byte pseudonyms were assigned in that release. CSP Initialization of the constant data The statement group, name=C$$CCPI, which provides the initialization of the constant values should be executed before using them with the CPI Communications calls. :eprol. :recditem name = CM_DN level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_OID level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_ALLOCATE_NO_CONFIRM level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_ALLOCATE_CONFIRM level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_BEGIN_IMPLICIT level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_BEGIN_EXPLICIT level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_CMACCI level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_CMACCP level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_CMALLC level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_CMCANC level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_CMCFM level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_CMCFMD level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_CMCNVI level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_CMCNVO level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_CMDEAL level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_CMDFDE level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_CMEACN level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_CMEAEQ level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_CMEAPT level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_CMECS level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_CMECT level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_CMECTX level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_CMEID level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_CMEMBS level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_CMEMN level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_CMEPID level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_CMEPLN level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_CMESI level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_CMESL level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_CMESRM level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_CMESUI level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_CMETC level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_CMETPN level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_CMFLUS level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_CMINCL level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_CMINIC level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_CMINIT level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_CMPREP level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_CMPTR level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_CMRCV level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_CMRCVX level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_CMRLTP level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_CMRTS level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_CMSAC level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_CMSACN level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_CMSAEQ level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_CMSAPT level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_CMSBT level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_CMSCSP level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_CMSCST level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_CMSCSU level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_CMSCT level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_CMSCU level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_CMSDT level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_CMSED level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_CMSEND level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_CMSERR level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_CMSF level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_CMSID level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_CMSLD level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_CMSLTP level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_CMSMN level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_CMSNDX level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_CMSPDP level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_CMSPID level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_CMSPLN level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_CMSPM level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_CMSPTR level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_CMSQCF level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_CMSQPM level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_CMSRC level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_CMSRT level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_CMSSL level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_CMSSRM level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_CMSST level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_CMSTC level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_CMSTPN level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_CMTRTS level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_CMWAIT level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_CMWCMP level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_CONFIRMATION_NOT_URGENT level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_CONFIRMATION_URGENT level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_INITIALIZATION_QUEUE level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_SEND_QUEUE level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_RECEIVE_QUEUE level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_SEND_RECEIVE_QUEUE level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_EXPEDITED_SEND_QUEUE level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_EXPEDITED_RECEIVE_QUEUE level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_INITIALIZE_STATE level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_SEND_STATE level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_RECEIVE_STATE level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_SEND_PENDING_STATE level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_CONFIRM_STATE level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_CONFIRM_SEND_STATE level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_CONFIRM_DEALLOCATE_STATE level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_DEFER_RECEIVE_STATE level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_DEFER_DEALLOCATE_STATE level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_SYNC_POINT_STATE level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_SYNC_POINT_SEND_STATE level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_SYNC_POINT_DEALLOCATE_STATE level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_INITIALIZE_INCOMING_STATE level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_SEND_ONLY_STATE level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_RECEIVE_ONLY_STATE level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_SEND_RECEIVE_STATE level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_PREPARED_STATE level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_BASIC_CONVERSATION level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_MAPPED_CONVERSATION level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_OK level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_SECURITY_NONE level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_SECURITY_SAME level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_SECURITY_PROGRAM level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_SECURITY_DISTRIBUTED level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_SECURITY_MUTUAL level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_SECURITY_PROGRAM_STRONG level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_ALLOCATE_FAILURE_NO_RETRY level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_ALLOCATE_FAILURE_RETRY level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_CONVERSATION_TYPE_MISMATCH level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_PIP_NOT_SPECIFIED_CORRECTLY level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_SECURITY_NOT_VALID level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_SYNC_LVL_NOT_SUPPORTED_LU level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_SYNC_LVL_NOT_SUPPORTED_SYS level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_SYNC_LVL_NOT_SUPPORTED_PGM level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_TPN_NOT_RECOGNIZED level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_TP_NOT_AVAILABLE_NO_RETRY level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_TP_NOT_AVAILABLE_RETRY level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_DEALLOCATED_ABEND level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_DEALLOCATED_NORMAL level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_PARAMETER_ERROR level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_PRODUCT_SPECIFIC_ERROR level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_PROGRAM_ERROR_NO_TRUNC level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_PROGRAM_ERROR_PURGING level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_PROGRAM_ERROR_TRUNC level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_PROGRAM_PARAMETER_CHECK level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_PROGRAM_STATE_CHECK level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_RESOURCE_FAILURE_NO_RETRY level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_RESOURCE_FAILURE_RETRY level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_UNSUCCESSFUL level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_DEALLOCATED_ABEND_SVC level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_DEALLOCATED_ABEND_TIMER level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_SVC_ERROR_NO_TRUNC level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_SVC_ERROR_PURGING level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_SVC_ERROR_TRUNC level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_OPERATION_INCOMPLETE level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_SYSTEM_EVENT level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_OPERATION_NOT_ACCEPTED level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_CONVERSATION_ENDING level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_SEND_RCV_MODE_NOT_SUPPORTED level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_BUFFER_TOO_SMALL level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_EXP_DATA_NOT_SUPPORTED level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_DEALLOC_CONFIRM_REJECT level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_ALLOCATION_ERROR level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_RETRY_LIMIT_EXCEEDED level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_NO_SECONDARY_INFORMATION level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_SECURITY_NOT_SUPPORTED level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_SECURITY_MUTUAL_FAILED level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_CALL_NOT_SUPPORTED level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_PARM_VALUE_NOT_SUPPORTED level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_TAKE_BACKOUT level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_DEALLOCATED_ABEND_BO level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_DEALLOCATED_ABEND_SVC_BO level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_DEALLOCATED_ABEND_TIMER_BO level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_RESOURCE_FAIL_NO_RETRY_BO level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_RESOURCE_FAILURE_RETRY_BO level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_DEALLOCATED_NORMAL_BO level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_CONV_DEALLOC_AFTER_SYNCPT level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_INCLUDE_PARTNER_REJECT_BO level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_NO_DATA_RECEIVED level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_DATA_RECEIVED level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_COMPLETE_DATA_RECEIVED level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_INCOMPLETE_DATA_RECEIVED level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_DEALLOCATE_SYNC_LEVEL level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_DEALLOCATE_FLUSH level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_DEALLOCATE_CONFIRM level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_DEALLOCATE_ABEND level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_DEFAULT_ENCODING level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_UNICODE_ENCODING level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_DEFAULT_SYNTAX level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_DCE_SYNTAX level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_XDS_SYNTAX level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_NDS_SYNTAX level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_RECEIVE_ERROR level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_SEND_ERROR level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_FILL_LL level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_FILL_BUFFER level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_EXPLICIT level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_REFERENCE level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_DISTINGUISHED_NAME level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_LOCAL_DISTINGUISHED_NAME level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_PROGRAM_FUNCTION_ID level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_OSI_TPSU_TITLE_OID level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_PROGRAM_BINDING level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_PREPARE_DATA_NOT_PERMITTED level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_PREPARE_DATA_PERMITTED level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_PREP_TO_RECEIVE_SYNC_LEVEL level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_PREP_TO_RECEIVE_FLUSH level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_PREP_TO_RECEIVE_CONFIRM level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_BLOCKING level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_NON_BLOCKING level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_RECEIVE_AND_WAIT level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_RECEIVE_IMMEDIATE level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_REQ_TO_SEND_NOT_RECEIVED level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_REQ_TO_SEND_RECEIVED level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_ALLOCATE_CONFIRMED level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_ALLOCATE_CONFIRMED_WITH_DATA level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_ALLOCATE_REJECTED_WITH_DATA level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_EXPEDITED_DATA_AVAILABLE level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_RTS_RCVD_AND_EXP_DATA_AVAIL level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_WHEN_SESSION_ALLOCATED level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_IMMEDIATE level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_HALF_DUPLEX level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_FULL_DUPLEX level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_BUFFER_DATA level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_SEND_AND_FLUSH level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_SEND_AND_CONFIRM level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_SEND_AND_PREP_TO_RECEIVE level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_SEND_AND_DEALLOCATE level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_NO_STATUS_RECEIVED level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_SEND_RECEIVED level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_CONFIRM_RECEIVED level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_CONFIRM_SEND_RECEIVED level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_CONFIRM_DEALLOC_RECEIVED level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_TAKE_COMMIT level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_TAKE_COMMIT_SEND level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_TAKE_COMMIT_DEALLOCATE level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_TAKE_COMMIT_DATA_OK level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_TAKE_COMMIT_SEND_DATA_OK level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_TAKE_COMMIT_DEALLOC_DATA_OK level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_PREPARE_OK level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_JOIN_TRANSACTION level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_NONE level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_CONFIRM level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_SYNC_POINT level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_SYNC_POINT_NO_CONFIRM level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_CHAINED_TRANSACTIONS level = 10 occurs = 00001 scope = GLOBAL :recditem name = CM_UNCHAINED_TRANSACTIONS level = 10 occurs = 00001 scope = GLOBAL :recditem name = AE_QUALIFIER level = 77 occurs = 00001 scope = GLOBAL :recditem name = AE_QUALIFIER_LENGTH level = 77 occurs = 00001 scope = GLOBAL :recditem name = AE_QUALIFIER_FORMAT level = 77 occurs = 00001 scope = GLOBAL :recditem name = ALLOCATE_CONFIRM level = 77 occurs = 00001 scope = GLOBAL :recditem name = AP_TITLE level = 77 occurs = 00001 scope = GLOBAL :recditem name = AP_TITLE_LENGTH level = 77 occurs = 00001 scope = GLOBAL :recditem name = AP_TITLE_FORMAT level = 77 occurs = 00001 scope = GLOBAL :recditem name = APPLICATION_CONTEXT_NAME level = 77 occurs = 00001 scope = GLOBAL :recditem name = APPLICATION_CONTEXT_NAME_LENGTH level = 77 occurs = 00001 scope = GLOBAL :recditem name = BEGIN_TRANSACTION level = 77 occurs = 00001 scope = GLOBAL :recditem name = BUFFER level = 77 occurs = 00001 scope = GLOBAL :recditem name = BUFFER_LENGTH level = 77 occurs = 00001 scope = GLOBAL :recditem name = CALL_ID level = 77 occurs = 00001 scope = GLOBAL :recditem name = COMPLETED_OP_INDEX_LIST level = 77 occurs = 00001 scope = GLOBAL :recditem name = COMPLETED_OP_COUNT level = 77 occurs = 00001 scope = GLOBAL :recditem name = CONFIRMATION_URGENCY level = 77 occurs = 00001 scope = GLOBAL :recditem name = CONTEXT_ID level = 77 occurs = 00001 scope = GLOBAL :recditem name = CONTEXT_ID_LENGTH level = 77 occurs = 00001 scope = GLOBAL :recditem name = CONTROL_INFORMATION_RECEIVED level = 77 occurs = 00001 scope = GLOBAL :recditem name = CONVERSATION_ID level = 77 occurs = 00001 scope = GLOBAL :recditem name = CONVERSATION_QUEUE level = 77 occurs = 00001 scope = GLOBAL :recditem name = CONVERSATION_RETURN_CODE level = 77 occurs = 00001 scope = GLOBAL :recditem name = CONVERSATION_SECURITY_TYPE level = 77 occurs = 00001 scope = GLOBAL :recditem name = CONVERSATION_STATE level = 77 occurs = 00001 scope = GLOBAL :recditem name = CONVERSATION_TYPE level = 77 occurs = 00001 scope = GLOBAL :recditem name = DATA_RECEIVED level = 77 occurs = 00001 scope = GLOBAL :recditem name = DEALLOCATE_TYPE level = 77 occurs = 00001 scope = GLOBAL :recditem name = DIRECTORY_ENCODING level = 77 occurs = 00001 scope = GLOBAL :recditem name = DIRECTORY_SYNTAX level = 77 occurs = 00001 scope = GLOBAL :recditem name = ERROR_DIRECTION level = 77 occurs = 00001 scope = GLOBAL :recditem name = EXPEDITED_RECEIVE_TYPE level = 77 occurs = 00001 scope = GLOBAL :recditem name = FILL level = 77 occurs = 00001 scope = GLOBAL :recditem name = INITIALIZATION_DATA level = 77 occurs = 00001 scope = GLOBAL :recditem name = INITIALIZATION_DATA_LENGTH level = 77 occurs = 00001 scope = GLOBAL :recditem name = LOG_DATA level = 77 occurs = 00001 scope = GLOBAL :recditem name = LOG_DATA_LENGTH level = 77 occurs = 00001 scope = GLOBAL :recditem name = MAXIMUM_BUFFER_SIZE level = 77 occurs = 00001 scope = GLOBAL :recditem name = MODE_NAME level = 77 occurs = 00001 scope = GLOBAL :recditem name = MODE_NAME_LENGTH level = 77 occurs = 00001 scope = GLOBAL :recditem name = OOID level = 77 occurs = 00001 scope = GLOBAL :recditem name = OOID_LIST level = 77 occurs = 00001 scope = GLOBAL :recditem name = OOID_LIST_COUNT level = 77 occurs = 00001 scope = GLOBAL :recditem name = PARTNER_ID level = 77 occurs = 00001 scope = GLOBAL :recditem name = PARTNER_ID_LENGTH level = 77 occurs = 00001 scope = GLOBAL :recditem name = PARTNER_ID_SCOPE level = 77 occurs = 00001 scope = GLOBAL :recditem name = PARTNER_ID_TYPE level = 77 occurs = 00001 scope = GLOBAL :recditem name = PARTNER_LU_NAME level = 77 occurs = 00001 scope = GLOBAL :recditem name = PARTNER_LU_NAME_LENGTH level = 77 occurs = 00001 scope = GLOBAL :recditem name = PREPARE_DATA_PERMITTED level = 77 occurs = 00001 scope = GLOBAL :recditem name = PREPARE_TO_RECEIVE_TYPE level = 77 occurs = 00001 scope = GLOBAL :recditem name = PROCESSING_MODE level = 77 occurs = 00001 scope = GLOBAL :recditem name = QUEUE_PROCESSING_MODE level = 77 occurs = 00001 scope = GLOBAL :recditem name = RECEIVE_TYPE level = 77 occurs = 00001 scope = GLOBAL :recditem name = RECEIVED_LENGTH level = 77 occurs = 00001 scope = GLOBAL :recditem name = REQUEST_TO_SEND_RECEIVED level = 77 occurs = 00001 scope = GLOBAL :recditem name = REQUESTED_LENGTH level = 77 occurs = 00001 scope = GLOBAL :recditem name = RETURN_CODE level = 77 occurs = 00001 scope = GLOBAL :recditem name = RETURN_CONTROL level = 77 occurs = 00001 scope = GLOBAL :recditem name = SECURITY_PASSWORD level = 77 occurs = 00001 scope = GLOBAL :recditem name = SECURITY_PASSWORD_LENGTH level = 77 occurs = 00001 scope = GLOBAL :recditem name = SECURITY_USER_ID level = 77 occurs = 00001 scope = GLOBAL :recditem name = SECURITY_USER_ID_LENGTH level = 77 occurs = 00001 scope = GLOBAL :recditem name = SEND_LENGTH level = 77 occurs = 00001 scope = GLOBAL :recditem name = SEND_RECEIVE_MODE level = 77 occurs = 00001 scope = GLOBAL :recditem name = SEND_TYPE level = 77 occurs = 00001 scope = GLOBAL :recditem name = STATUS_RECEIVED level = 77 occurs = 00001 scope = GLOBAL :recditem name = SYM_DEST_NAME level = 77 occurs = 00001 scope = GLOBAL :recditem name = SYNC_LEVEL level = 77 occurs = 00001 scope = GLOBAL :recditem name = TIMEOUT level = 77 occurs = 00001 scope = GLOBAL :recditem name = TP_NAME level = 77 occurs = 00001 scope = GLOBAL :recditem name = TP_NAME_LENGTH level = 77 occurs = 00001 scope = GLOBAL :recditem name = TRANSACTION_CONTROL level = 77 occurs = 00001 scope = GLOBAL :recditem name = USER_FIELD level = 77 occurs = 00001 scope = GLOBAL :recditem name = USER_FIELD_LIST level = 77 occurs = 00001 scope = GLOBAL :erecord. :item name = CM_DN date = '10/14/93' time = '12:00:01' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_OID date = '10/14/93' time = '12:00:01' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_INT_DIGITS date = '10/14/93' time = '12:00:01' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_ALLOCATE_NO_CONFIRM date = '10/14/93' time = '12:00:01' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_ALLOCATE_CONFIRM date = '10/14/93' time = '12:00:01' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_BEGIN_IMPLICIT date = '10/14/93' time = '12:00:01' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_BEGIN_EXPLICIT date = '10/14/93' time = '12:00:01' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_CMACCI date = '11/18/93' time = '15:17:01' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_CMACCP date = '11/18/93' time = '15:17:01' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_CMALLC date = '11/18/93' time = '15:17:01' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_CMCANC date = '11/18/93' time = '15:17:01' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_CMCFM date = '11/18/93' time = '15:17:01' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_CMCFMD date = '11/18/93' time = '15:17:01' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_CMCNVI date = '11/18/93' time = '15:17:01' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_CMCNVO date = '11/18/93' time = '15:17:01' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_CMDEAL date = '11/18/93' time = '15:17:01' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_CMDFDE date = '11/18/93' time = '15:17:01' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_CMEACN date = '11/18/93' time = '15:17:01' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_CMEAEQ date = '11/18/93' time = '15:17:01' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_CMEAPT date = '11/18/93' time = '15:17:01' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_CMECS date = '11/18/93' time = '15:17:01' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_CMECT date = '11/18/93' time = '15:17:01' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_CMECTX date = '11/18/93' time = '15:17:01' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_CMEID date = '11/18/93' time = '15:17:01' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_CMEMBS date = '11/18/93' time = '15:17:01' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_CMEMN date = '11/18/93' time = '15:17:01' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_CMEPID date = '11/18/93' time = '15:17:01' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_CMEPLN date = '11/18/93' time = '15:17:01' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_CMESI date = '11/18/93' time = '15:17:01' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_CMESL date = '11/18/93' time = '15:17:01' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_CMESRM date = '11/18/93' time = '15:17:01' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_CMESUI date = '11/18/93' time = '15:17:01' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_CMETC date = '11/18/93' time = '15:17:01' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_CMETPN date = '11/18/93' time = '15:17:01' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_CMFLUS date = '11/18/93' time = '15:17:01' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_CMINCL date = '11/18/93' time = '15:17:01' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_CMINIC date = '11/18/93' time = '15:17:01' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_CMINIT date = '11/18/93' time = '15:17:01' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_CMPREP date = '11/18/93' time = '15:17:01' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_CMPTR date = '11/18/93' time = '15:17:01' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_CMRCV date = '11/18/93' time = '15:17:01' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_CMRCVX date = '11/18/93' time = '15:17:01' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_CMRLTP date = '11/18/93' time = '15:17:01' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_CMRTS date = '11/18/93' time = '15:17:01' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_CMSAC date = '11/18/93' time = '15:17:01' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_CMSACN date = '11/18/93' time = '15:17:01' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_CMSAEQ date = '11/18/93' time = '15:17:01' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_CMSAPT date = '11/18/93' time = '15:17:01' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_CMSBT date = '11/18/93' time = '15:17:01' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_CMSCSP date = '11/18/93' time = '15:17:01' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_CMSCST date = '11/18/93' time = '15:17:01' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_CMSCSU date = '11/18/93' time = '15:17:01' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_CMSCT date = '11/18/93' time = '15:17:01' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_CMSCU date = '11/18/93' time = '15:17:01' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_CMSDT date = '11/18/93' time = '15:17:01' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_CMSED date = '11/18/93' time = '15:17:01' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_CMSEND date = '11/18/93' time = '15:17:01' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_CMSERR date = '11/18/93' time = '15:17:01' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_CMSF date = '11/18/93' time = '15:17:01' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_CMSID date = '11/18/93' time = '15:17:01' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_CMSLD date = '11/18/93' time = '15:17:01' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_CMSLTP date = '11/18/93' time = '15:17:01' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_CMSMN date = '11/18/93' time = '15:17:01' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_CMSNDX date = '11/18/93' time = '15:17:01' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_CMSPDP date = '11/18/93' time = '15:17:01' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_CMSPID date = '11/18/93' time = '15:17:01' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_CMSPLN date = '11/18/93' time = '15:17:01' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_CMSPM date = '11/18/93' time = '15:17:01' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_CMSPTR date = '11/18/93' time = '15:17:01' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_CMSQCF date = '11/18/93' time = '15:17:01' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_CMSQPM date = '11/18/93' time = '15:17:01' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_CMSRC date = '11/18/93' time = '15:17:01' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_CMSRT date = '11/18/93' time = '15:17:01' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_CMSSL date = '11/18/93' time = '15:17:01' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_CMSSRM date = '11/18/93' time = '15:17:01' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_CMSST date = '11/18/93' time = '15:17:01' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_CMSTC date = '11/18/93' time = '15:17:01' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_CMSTPN date = '11/18/93' time = '15:17:01' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_CMTRTS date = '11/18/93' time = '15:17:01' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_CMWAIT date = '11/18/93' time = '15:17:01' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_CMWCMP date = '11/18/93' time = '15:17:01' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_CONFIRMATION_NOT_URGENT date = '10/14/93' time = '12:00:01' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_CONFIRMATION_URGENT date = '10/14/93' time = '12:00:01' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_INITIALIZATION_QUEUE date = '09/16/93' time = '14:22:42' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_SEND_QUEUE date = '09/16/93' time = '14:22:42' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_RECEIVE_QUEUE date = '09/16/93' time = '14:22:42' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_SEND_RECEIVE_QUEUE date = '09/16/93' time = '14:22:42' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_EXPEDITED_SEND_QUEUE date = '09/16/93' time = '14:22:42' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_EXPEDITED_RECEIVE_QUEUE date = '09/16/93' time = '14:22:42' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_INITIALIZE_STATE date = '03/18/91' time = '14:22:42' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_SEND_STATE date = '03/18/91' time = '14:22:42' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_RECEIVE_STATE date = '03/18/91' time = '14:22:43' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_SEND_PENDING_STATE date = '03/18/91' time = '14:22:43' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_CONFIRM_STATE date = '03/18/91' time = '14:22:43' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_CONFIRM_SEND_STATE date = '03/18/91' time = '14:22:43' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_CONFIRM_DEALLOCATE_STATE date = '03/18/91' time = '14:22:43' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_DEFER_RECEIVE_STATE date = '03/18/91' time = '14:22:43' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_DEFER_DEALLOCATE_STATE date = '03/18/91' time = '14:22:43' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_SYNC_POINT_STATE date = '03/18/91' time = '14:22:43' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_SYNC_POINT_SEND_STATE date = '03/18/91' time = '14:22:43' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_SYNC_POINT_DEALLOCATE_STATE date = '03/18/91' time = '14:22:43' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_INITIALIZE_INCOMING_STATE date = '10/31/92' time = '24:00:00' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_SEND_ONLY_STATE date = '10/07/93' time = '00:00:00' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_RECEIVE_ONLY_STATE date = '10/07/93' time = '00:00:00' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_SEND_RECEIVE_STATE date = '10/07/92' time = '00:00:00' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_PREPARED_STATE date = '10/14/93' time = '12:00:01' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_BASIC_CONVERSATION date = '02/07/90' time = '10:54:59' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_MAPPED_CONVERSATION date = '02/07/90' time = '11:27:11' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_SECURITY_NONE date = '10/31/92' time = '24:00:00' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_SECURITY_SAME date = '10/31/92' time = '24:00:00' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_SECURITY_PROGRAM date = '10/31/92' time = '24:00:00' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_SECURITY_DISTRIBUTED date = '11/13/93' time = '24:00:00' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_SECURITY_MUTUAL date = '11/13/93' time = '24:00:00' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_SECURITY_PROGRAM_STRONG date = '12/02/93' time = '16:27:00' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_OK date = '02/07/90' time = '10:54:59' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_ALLOCATE_FAILURE_NO_RETRY date = '02/07/90' time = '10:55:00' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_ALLOCATE_FAILURE_RETRY date = '02/07/90' time = '11:28:53' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_CONVERSATION_TYPE_MISMATCH date = '03/19/91' time = '09:24:13' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_PIP_NOT_SPECIFIED_CORRECTLY date = '03/19/91' time = '09:24:13' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_SECURITY_NOT_VALID date = '02/07/90' time = '10:55:00' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_SYNC_LVL_NOT_SUPPORTED_LU date = '03/18/91' time = '14:22:43' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_SYNC_LVL_NOT_SUPPORTED_SYS date = '12/06/93' time = '11:11:11' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_SYNC_LVL_NOT_SUPPORTED_PGM date = '02/07/90' time = '10:55:00' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_TPN_NOT_RECOGNIZED date = '02/07/90' time = '10:55:00' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_TP_NOT_AVAILABLE_NO_RETRY date = '02/07/90' time = '10:55:00' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_TP_NOT_AVAILABLE_RETRY date = '02/07/90' time = '10:55:00' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_DEALLOCATED_ABEND date = '02/07/90' time = '10:55:00' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_DEALLOCATED_NORMAL date = '02/07/90' time = '10:55:00' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_PARAMETER_ERROR date = '02/07/90' time = '10:55:00' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_PRODUCT_SPECIFIC_ERROR date = '02/08/90' time = '06:31:36' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_PROGRAM_ERROR_NO_TRUNC date = '02/07/90' time = '10:55:00' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_PROGRAM_ERROR_PURGING date = '02/07/90' time = '10:55:00' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_PROGRAM_ERROR_TRUNC date = '02/07/90' time = '10:55:00' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_PROGRAM_PARAMETER_CHECK date = '02/07/90' time = '10:55:00' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_PROGRAM_STATE_CHECK date = '02/07/90' time = '10:55:00' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_RESOURCE_FAILURE_NO_RETRY date = '02/07/90' time = '10:55:00' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_RESOURCE_FAILURE_RETRY date = '02/07/90' time = '10:55:00' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_UNSUCCESSFUL date = '02/07/90' time = '10:55:00' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_DEALLOCATED_ABEND_SVC date = '03/18/91' time = '14:22:43' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_DEALLOCATED_ABEND_TIMER date = '03/18/91' time = '14:22:43' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_SVC_ERROR_NO_TRUNC date = '03/18/91' time = '14:22:43' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_SVC_ERROR_PURGING date = '03/18/91' time = '14:22:43' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_SVC_ERROR_TRUNC date = '03/18/91' time = '14:22:43' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_OPERATION_INCOMPLETE date = '10/31/92' time = '24:00:00' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_SYSTEM_EVENT date = '10/31/92' time = '24:00:00' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_OPERATION_NOT_ACCEPTED date = '10/31/92' time = '24:00:00' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_CONVERSATION_ENDING date = '10/07/93' time = '00:00:00' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_SEND_RCV_MODE_NOT_SUPPORTED date = '10/07/93' time = '00:00:00' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_BUFFER_TOO_SMALL date = '10/07/93' time = '00:00:00' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_EXP_DATA_NOT_SUPPORTED date = '10/07/93' time = '00:00:00' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_DEALLOC_CONFIRM_REJECT date = '10/07/93' time = '00:00:00' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_ALLOCATION_ERROR date = '10/07/93' time = '00:00:00' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_RETRY_LIMIT_EXCEEDED date = '11/17/93' time = '10:55:00' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_NO_SECONDARY_INFORMATION date = '11/18/93' time = '15:17:01' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_SECURITY_NOT_SUPPORTED date = '11/13/93' time = '00:00:00' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_SECURITY_MUTUAL_FAILED date = '11/13/93' time = '00:00:00' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_CALL_NOT_SUPPORTED date = '12/06/93' time = '11:11:11' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_PARM_VALUE_NOT_SUPPORTED date = '12/06/93' time = '11:11:11' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_TAKE_BACKOUT date = '03/18/91' time = '14:22:43' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_DEALLOCATED_ABEND_BO date = '03/18/91' time = '14:22:43' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_DEALLOCATED_ABEND_SVC_BO date = '03/18/91' time = '14:22:43' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_DEALLOCATED_ABEND_TIMER_BO date = '03/18/91' time = '14:22:43' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_RESOURCE_FAIL_NO_RETRY_BO date = '03/18/91' time = '14:22:43' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_RESOURCE_FAILURE_RETRY_BO date = '03/18/91' time = '14:22:43' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_DEALLOCATED_NORMAL_BO date = '03/18/91' time = '14:22:43' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_CONV_DEALLOC_AFTER_SYNCPT date = '10/07/93' time = '00:00:00' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_INCLUDE_PARTNER_REJECT_BO date = '10/07/93' time = '00:00:00' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_NO_DATA_RECEIVED date = '02/07/90' time = '10:55:00' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_DATA_RECEIVED date = '02/07/90' time = '10:55:00' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_COMPLETE_DATA_RECEIVED date = '02/07/90' time = '10:55:00' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_INCOMPLETE_DATA_RECEIVED date = '02/07/90' time = '10:55:00' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_DEALLOCATE_SYNC_LEVEL date = '02/07/90' time = '10:55:00' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_DEALLOCATE_FLUSH date = '02/07/90' time = '10:55:00' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_DEALLOCATE_CONFIRM date = '02/07/90' time = '10:55:00' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_DEALLOCATE_ABEND date = '02/07/90' time = '10:55:00' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_DEFAULT_ENCODING date = '11/17/93' time = '10:55:00' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_UNICODE_ENCODING date = '11/17/93' time = '10:55:00' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_DEFAULT_SYNTAX date = '11/17/93' time = '10:55:00' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_DCE_SYNTAX date = '11/17/93' time = '10:55:00' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_XDS_SYNTAX date = '11/17/93' time = '10:55:00' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_NDS_SYNTAX date = '11/17/93' time = '10:55:00' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_RECEIVE_ERROR date = '02/07/90' time = '10:55:00' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_SEND_ERROR date = '02/07/90' time = '10:55:00' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_FILL_LL date = '02/07/90' time = '10:55:00' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_FILL_BUFFER date = '02/07/90' time = '10:55:01' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_EXPLICIT date = '11/17/93' time = '10:55:00' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_REFERENCE date = '11/17/93' time = '10:55:00' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_DISTINGUISHED_NAME date = '11/17/93' time = '10:55:00' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_LOCAL_DISTINGUISHED_NAME date = '11/17/93' time = '10:55:00' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_PROGRAM_FUNCTION_ID date = '11/17/93' time = '10:55:00' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_OSI_TPSU_TITLE_OID date = '11/17/93' time = '10:55:00' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_PROGRAM_BINDING date = '11/17/93' time = '10:55:00' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_PREPARE_DATA_NOT_PERMITTED date = '10/14/93' time = '12:00:01' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_PREPARE_DATA_PERMITTED date = '10/14/93' time = '12:00:01' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_PREP_TO_RECEIVE_SYNC_LEVEL date = '02/07/90' time = '10:55:01' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_PREP_TO_RECEIVE_FLUSH date = '02/07/90' time = '10:55:01' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_PREP_TO_RECEIVE_CONFIRM date = '02/07/90' time = '10:55:01' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_BLOCKING date = '10/31/92' time = '24:00:00' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_NON_BLOCKING date = '10/31/92' time = '24:00:00' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_RECEIVE_AND_WAIT date = '02/07/90' time = '10:55:01' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_RECEIVE_IMMEDIATE date = '02/07/90' time = '10:55:01' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_REQ_TO_SEND_NOT_RECEIVED date = '02/07/90' time = '10:55:01' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_REQ_TO_SEND_RECEIVED date = '02/07/90' time = '10:55:01' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_ALLOCATE_CONFIRMED date = '10/14/93' time = '12:00:01' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_ALLOCATE_CONFIRMED_WITH_DATA date = '10/14/93' time = '12:00:01' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_ALLOCATE_REJECTED_WITH_DATA date = '10/14/93' time = '12:00:01' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_EXPEDITED_DATA_AVAILABLE date = '10/07/93' time = '00:00:00' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_RTS_RCVD_AND_EXP_DATA_AVAIL date = '10/07/93' time = '00:00:00' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_WHEN_SESSION_ALLOCATED date = '02/07/90' time = '10:55:01' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_IMMEDIATE date = '02/07/90' time = '10:55:01' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_HALF_DUPLEX date = '10/07/93' time = '00:00:00' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_FULL_DUPLEX date = '10/07/93' time = '00:00:00' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_BUFFER_DATA date = '02/07/90' time = '10:55:01' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_SEND_AND_FLUSH date = '02/07/90' time = '10:55:01' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_SEND_AND_CONFIRM date = '02/07/90' time = '10:55:01' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_SEND_AND_PREP_TO_RECEIVE date = '02/07/90' time = '10:55:02' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_SEND_AND_DEALLOCATE date = '02/07/90' time = '10:55:02' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_NO_STATUS_RECEIVED date = '02/07/90' time = '10:55:02' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_SEND_RECEIVED date = '02/07/90' time = '10:55:02' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_CONFIRM_RECEIVED date = '02/07/90' time = '10:55:02' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_CONFIRM_SEND_RECEIVED date = '02/07/90' time = '10:55:02' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_CONFIRM_DEALLOC_RECEIVED date = '02/07/90' time = '10:55:02' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_TAKE_COMMIT date = '03/18/91' time = '14:22:43' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_TAKE_COMMIT_SEND date = '03/18/91' time = '14:22:43' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_TAKE_COMMIT_DEALLOCATE date = '03/18/91' time = '14:22:43' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_TAKE_COMMIT_DATA_OK date = '10/14/93' time = '12:00:01' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_TAKE_COMMIT_SEND_DATA_OK date = '10/14/93' time = '12:00:01' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_TAKE_COMMIT_DEALLOC_DATA_OK date = '10/14/93' time = '12:00:01' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_PREPARE_OK date = '10/14/93' time = '12:00:01' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_JOIN_TRANSACTION date = '10/14/93' time = '12:00:01' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_NONE date = '02/07/90' time = '10:55:02' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_CONFIRM date = '02/07/90' time = '10:55:02' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_SYNC_POINT date = '03/18/91' time = '14:22:43' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_SYNC_POINT_NO_CONFIRM date = '10/14/93' time = '12:00:01' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_CHAINED_TRANSACTIONS date = '10/14/93' time = '12:00:01' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CM_UNCHAINED_TRANSACTIONS date = '10/14/93' time = '12:00:01' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = AE_QUALIFIER date = '10/25/93' time = '12:00:01' type = CHA bytes = 01024 decimals = 00 evensql = N :eitem. :item name = AE_QUALIFIER_LENGTH date = '10/25/93' time = '12:00:01' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = AE_QUALIFIER_FORMAT date = '10/25/93' time = '12:00:01' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = ALLOCATE_CONFIRM date = '10/25/93' time = '12:00:01' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = AP_TITLE date = '10/25/93' time = '12:00:01' type = CHA bytes = 01024 decimals = 00 evensql = N :eitem. :item name = AP_TITLE_LENGTH date = '10/25/93' time = '12:00:01' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = AP_TITLE_FORMAT date = '10/25/93' time = '12:00:01' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = APPLICATION_CONTEXT_NAME date = '10/25/93' time = '12:00:01' type = CHA bytes = 00256 decimals = 00 evensql = N :eitem. :item name = AP_APPLICATION_CONTEXT_LENGTH date = '10/25/93' time = '12:00:01' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = BUFFER date = '02/07/90' time = '10:55:02' type = CHA bytes = 00000 decimals = 00 evensql = N :eitem. :item name = BUFFER_LENGTH date = '02/07/90' time = '10:55:02' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CALL_ID date = '11/18/93' time = '15:17:01' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = COMPLETED_OP_INDEX_LIST date = '09/16/93' time = '22:22:22' type = CHA bytes = 00000 decimals = 00 evensql = N :eitem. :item name = COMPLETED_OP_COUNT date = '09/16/93' time = '22:22:22' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CONFIRMATION_URGENCY date = '10/25/93' time = '12:00:01' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CONTEXT_ID date = '02/07/90' time = '10:55:02' type = CHA bytes = 00008 decimals = 00 evensql = N :eitem. :item name = CONTEXT_ID_LENGTH date = '02/01/93' time = '10:55:02' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CONTROL_INFORMATION_RECEIVED date = '10/25/93' time = '12:00:01' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CONVERSATION_ID date = '02/07/90' time = '10:55:02' type = CHA bytes = 00008 decimals = 00 evensql = N :eitem. :item name = CONVERSATION_QUEUE date = '09/16/93' time = '10:55:02' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CONVERSATION_RETURN_CODE date = '02/01/93' time = '05:43:53' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CONVERSATION_SECURITY_TYPE date = '02/08/90' time = '05:43:53' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CONVERSATION_STATE date = '03/18/91' time = '14:22:44' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = CONVERSATION_TYPE date = '02/08/90' time = '05:43:53' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = DIRECTORY_ENCODING date = '11/17/93' time = '11:11:11' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = DIRECTORY_SYNTAX date = '11/17/93' time = '11:11:11' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = DATA_RECEIVED date = '02/07/90' time = '09:39:48' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = DEALLOCATE_TYPE date = '02/07/90' time = '10:55:02' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = ERROR_DIRECTION date = '02/07/90' time = '09:39:49' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = EXPEDITED_RECEIVE_TYPE date = '10/07/93' time = '00:00:00' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = FILL date = '12/07/90' time = '09:39:49' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = INITIALIZATION_DATA date = '10/25/93' time = '09:39:49' type = CHA bytes = 10000 decimals = 00 evensql = N :eitem. :item name = INITIALIZATION_DATA_LENGTH date = '10/25/93' time = '10:55:02' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = LOG_DATA date = '02/07/90' time = '09:39:49' type = CHA bytes = 00512 decimals = 00 evensql = N :eitem. :item name = LOG_DATA_LENGTH date = '02/07/90' time = '10:55:02' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = MAXIMUM_BUFFER_SIZE date = '02/07/90' time = '10:55:02' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = MODE_NAME date = '02/07/90' time = '10:55:02' type = CHA bytes = 00008 decimals = 00 evensql = N :eitem. :item name = MODE_NAME_LENGTH date = '02/07/90' time = '10:55:02' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = OOID date = '09/16/93' time = '10:55:02' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = OOID_LIST date = '09/16/93' time = '10:55:02' type = CHA bytes = 00000 decimals = 00 evensql = N :eitem. :item name = OOID_LIST_COUNT date = '09/16/93' time = '10:55:02' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = PARTNER_ID date = '11/17/93' time = '11:11:11' type = CHA bytes = 1024 decimals = 00 evensql = N :eitem. :item name = PARTNER_ID_LENGTH date = '11/17/93' time = '11:11:11' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = PARTNER_ID_SCOPE date = '11/17/93' time = '11:11:11' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = PARTNER_ID_TYPE date = '11/17/93' time = '11:11:11' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = PARTNER_LU_NAME date = '02/07/90' time = '10:55:02' type = CHA bytes = 00017 decimals = 00 evensql = N :eitem. :item name = PARTNER_LU_NAME_LENGTH date = '02/07/90' time = '10:55:02' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = PREPARE_DATA_PERMITTED date = '10/25/93' time = '10:55:02' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = PREPARE_TO_RECEIVE_TYPE date = '02/07/90' time = '10:55:02' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = PROCESSING_MODE date = '02/01/93' time = '10:55:02' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = QUEUE_PROCESSING_MODE date = '09/16/93' time = '10:55:02' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = RECEIVE_TYPE date = '02/07/90' time = '10:55:02' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = RECEIVED_LENGTH date = '02/07/90' time = '10:55:02' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = REQUESTED_LENGTH date = '02/07/90' time = '10:55:02' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = REQUEST_TO_SEND_RECEIVED date = '02/09/90' time = '05:17:34' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = RETURN_CODE date = '02/07/90' time = '09:39:48' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = RETURN_CONTROL date = '02/07/90' time = '10:55:03' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = SECURITY_PASSWORD date = '02/01/93' time = '05:43:53' type = CHA bytes = 00010 decimals = 00 evensql = N :eitem. :item name = SECURITY_PASSWORD_LENGTH date = '02/01/93' time = '05:43:53' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = SECURITY_USER_ID date = '02/01/93' time = '05:43:53' type = CHA bytes = 00010 decimals = 00 evensql = N :eitem. :item name = SECURITY_USER_ID_LENGTH date = '02/01/93' time = '05:43:53' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = SEND_LENGTH date = '02/07/90' time = '10:55:03' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = SEND_RECEIVE_MODE date = '10/07/93' time = '00:00:00' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = SEND_TYPE date = '02/07/90' time = '10:55:03' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = STATUS_RECEIVED date = '02/07/90' time = '10:55:03' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = SYM_DEST_NAME date = '02/07/90' time = '10:55:03' type = CHA bytes = 00008 decimals = 00 evensql = N :eitem. :item name = SYNC_LEVEL date = '02/07/90' time = '10:55:03' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = TIMEOUT date = '09/16/93' time = '10:55:02' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = TP_NAME date = '02/07/90' time = '10:55:03' type = CHA bytes = 00064 decimals = 00 evensql = N :eitem. :item name = TP_NAME_LENGTH date = '02/07/90' time = '10:55:03' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = TRANSACTION_CONTROL date = '10/25/93' time = '10:55:02' type = BIN bytes = 00004 decimals = 00 evensql = N :eitem. :item name = USER_FIELD date = '09/16/93' time = '10:55:02' type = CHA bytes = 00008 decimals = 00 evensql = N :eitem. :item name = USER_FIELD_LIST date = '09/16/93' time = '10:55:02' type = CHA bytes = 00000 decimals = 00 evensql = N :eitem. ; ; /* ** ****************** End of Pseudonyms ********************* -------------------------------- C Pseudonym File (CMC or CPIC.H) CPIC 1.0 and CPIC 1.1 contained a pseudonym file for C named CMC. X/Open introduced a pseudonym file named CPIC.H. The updated pseudonym file merges CMC and CPIC.H. /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * CPI Communications Pseudonyms -- SC31-6180-01 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ /* * May 11, 1994 * * This file is organized as follows: * - Base CPI-C constants and type definitions * - Base CPI-C function prototypes */ #ifndef _cpic_h #define _cpic_h /* * CPI Communications Enumerated Constants */ /* * CM_INT32 should be a 32-bit, signed integer. The following * #define is system dependent and may need to be changed on * systems where signed long int does not define a 32-bit, signed * integer. */ #define CM_INT32 signed long int # define CM_ENTRY extern void # define CM_PTR * /* * These macros allow you to write programs that are easier to read, since * you can use the full name of the CPI-C call rather than its 6 character * entry point. * * When porting code that uses these macros, you will have to ensure that * the macros are defined on the target platform. */ #ifdef READABLE_MACROS #define Accept_Conversation cmaccp #define Accept_Incoming cmacci #define Allocate cmallc #define Cancel_Conversation cmcanc #define Confirm cmcfm #define Confirmed cmcfmd #define Convert_Incoming cmcnvi #define Convert_Outgoing cmcnvo #define Deallocate cmdeal #define Deferred_Deallocate cmdfde #define Extract_AE_Qualifier cmeaeq #define Extract_AP_Title cmeapt #define Extract_Application_Context_Name cmeacn #define Extract_Conversation_Context cmectx #define Extract_Conversation_State cmecs #define Extract_Conversation_Type cmect #define Extract_Initialization_Data cmeid #define Extract_Maximum_Buffer_Size cmembs #define Extract_Mode_Name cmemn #define Extract_Partner_ID cmepid #define Extract_Partner_LU_Name cmepln #define Extract_Secondary_Information cmesi #define Extract_Security_User_ID cmesui #define Extract_Send_Receive_Mode cmesrm #define Extract_Sync_Level cmesl #define Extract_Transaction_Control cmetc #define Extract_TP_Name cmetpn #define Flush cmflus #define Include_Partner_In_Transaction cmincl #define Initialize_Conversation cminit #define Initialize_For_Incoming cminic #define Prepare cmprep #define Prepare_To_Receive cmptr #define Receive cmrcv #define Receive_Expedited_Data cmrcvx #define Release_Local_TP_Name cmrltp #define Request_To_Send cmrts #define Send_Data cmsend #define Send_Error cmserr #define Send_Expedited_Data cmsndx #define Set_AE_Qualifier cmsaeq #define Set_Allocate_Confirm cmsac #define Set_AP_Title cmsapt #define Set_Application_Context_Name cmsacn #define Set_Begin_Transaction cmsbt #define Set_Confirmation_Urgency cmscu #define Set_Conversation_Security_Password cmscsp #define Set_Conversation_Security_Type cmscst #define Set_Conversation_Security_User_ID cmscsu #define Set_Conversation_Type cmsct #define Set_Deallocate_Type cmsdt #define Set_Error_Direction cmsed #define Set_Fill cmsf #define Set_Initialization_Data cmsid #define Set_Log_Data cmsld #define Set_Mode_Name cmsmn #define Set_Partner_ID cmspid #define Set_Partner_LU_Name cmspln #define Set_Prepare_Data_Permitted cmspdp #define Set_Prepare_To_Receive_Type cmsptr #define Set_Processing_Mode cmspm #define Set_Queue_Callback_Function cmsqcf #define Set_Queue_Processing_Mode cmsqpm #define Set_Receive_Type cmsrt #define Set_Return_Control cmsrc #define Set_Send_Receive_Mode cmssrm #define Set_Send_Type cmsst #define Set_Sync_Level cmssl #define Set_TP_Name cmstpn #define Set_Transaction_Control cmstc #define Specify_Local_TP_Name cmsltp #define Test_Request_To_Send_Received cmtrts #define Wait_For_Completion cmwcmp #define Wait_For_Conversation cmwait #endif /* * - Base CPI-C constants and type definitions */ /* conversation ID */ typedef CM_INT32 CM_AE_QUAL_OR_AP_TITLE_FORMAT; /* used for AE_QUALIFIER_FORMAT */ /* and AP_TITLE_FORMAT */ typedef CM_INT32 CM_ALLOCATE_CONFIRM_TYPE; typedef CM_INT32 CM_BEGIN_TRANSACTION; typedef CM_INT32 CM_BUFFER_LENGTH; typedef CM_INT32 CM_CALL_ID; typedef CM_INT32 CM_COMPLETED_OP_COUNT; typedef CM_INT32 CM_CONFIRMATION_URGENCY; typedef CM_INT32 CM_CONTEXT_ID_LENGTH; typedef CM_INT32 CM_CONTROL_INFORMATION_RECEIVED; typedef CM_INT32 CM_CONVERSATION_QUEUE; typedef CM_INT32 CM_CONVERSATION_RETURN_CODE; typedef CM_INT32 CM_CONVERSATION_SECURITY_TYPE; typedef CM_INT32 CM_CONVERSATION_STATE; typedef CM_INT32 CM_CONVERSATION_TYPE; typedef CM_INT32 CM_DATA_RECEIVED_TYPE; typedef CM_INT32 CM_DEALLOCATE_TYPE; typedef CM_INT32 CM_DIRECTORY_ENCODING; typedef CM_INT32 CM_DIRECTORY_SYNTAX; typedef CM_INT32 CM_ERROR_DIRECTION; typedef CM_INT32 CM_FILL; --------------- (5) Only the calls that affect conversation states are included in the State table. (6) The state table entries for Deferred_Deallocate and Include_Partner_In_Transaction calls are for conversations using an OSI TP CRM only. These calls get the CM_PROGRAM_PARAMETER_CHECK if issued on a conversation using an LU 6.2 CRM, regardless of the state. (7) CPI Communications suspends action on the Deferred_Deallocate call until the transaction is committed or backed out. (8) While the Initialize_Conversation call can be issued only once for any given conversation, a program can issue multiple Initialize_Conversation calls to establish concurrent conversations with different partners. For more information, see "Multiple Conversations" on page 1. (9) The Request_To_Send call is not allowed in SEND, SEND-PENDING, CONFIRM-SEND, CONFIRM-DEALLOCATE, SYNC-POINT, SYNC-POINT-SEND, or SYNC-POINT-DEALLOCATE state when the conversation is using an OSI TP CRM. The call gets the CM_PROGRAM_STATE_CHECK return code. (10) When a program started by an incoming conversation startup request issues a Commit call before issuing an Accept_Conversation call, a state check results. The Commit call has no effect on other conversations in RESET state. (11) Conversations in INITIALIZE, INITIALIZE-INCOMING, or CONFIRM-DEALLOCATE state are not affected by Commit and Backout calls. (12) The conversation goes to RESET state if the local program had issued a Deferred_Deallocate call prior to issuing the Commit call. (13) The conversation goes to RESET or RECEIVE state if the local program had issued a Deferred_Deallocate call or a Prepare_To_Receive call with prepare_to_receive_type set to CM_PREP_TO_RECEIVE_SYNC_LEVEL, respectively, prior to entering PREPARED state. (14) When a program started by an incoming conversation startup request issues a Backout call before issuing an Accept_Conversation call, the underlying conversation is actually backed out, though the CPI Communications conversation remains in RESET state. (15) When a program started by an incoming conversation startup request issues a tx_commit call before issuing an Accept_Conversation call, a state check results. The tx_commit call has no effect on other conversations in RESET state. (16) Conversations in INITIALIZE, INITIALIZE-INCOMING, or CONFIRM-DEALLOCATE state are not affected by tx_commit and tx_rollback calls. (17) The conversation goes to RESET state if the local program had issued a Deferred_Deallocate call prior to issuing the Commit call. (18) The conversation goes to RESET or RECEIVE state if the local program had issued a Deferred_Deallocate call or a Prepare_To_Receive call with prepare_to_receive_type set to CM_PREP_TO_RECEIVE_SYNC_LEVEL, respectively, prior to entering PREPARED state. (19) When a program started by an incoming conversation startup request issues a tx_rollback call before issuing an Accept_Conversation call, the underlying conversation is actually backed out, though the CPI Communications conversation remains in RESET state. (20) This state is entered only if the conversation is allocated using an OSI TP CRM. (21) This call can be issued only if the conversation is allocated using an OSI TP CRM. (22) The state table entries for Deferred_Deallocate and Include_Partner_In_Transaction calls are for conversations using an OSI TP CRM only. These calls get the CM_PROGRAM_PARAMETER_CHECK if issued on a conversation using an LU 6.2 CRM, regardless of the state. (23) CPI Communications suspends action on the Deferred_Deallocate call until the transaction is committed or backed out. (24) While the Initialize_Conversation call can be issued only once for any given conversation, a program can issue multiple Initialize_Conversation calls to establish concurrent conversations with different partners. For more information, see "Multiple Conversations" on page 1. (25) When a program started by an incoming conversation startup request issues a Commit call before issuing an Accept_Conversation call, a state check results. The Commit call has no effect on other conversations in RESET state. (26) Conversations in INITIALIZE, INITIALIZE-INCOMING, or CONFIRM-DEALLOCATE state are not affected by Commit and Backout calls. (27) The conversation goes to RESET state if the local program had issued a Deferred_Deallocate call prior to issuing the Commit call. (28) The conversation goes to RESET state if the local program had issued a Deferred_Deallocate call prior to entering PREPARED state. (29) When a program started by an incoming conversation startup request issues a Backout call before issuing an Accept_Conversation call, the underlying conversation is actually backed out, though the CPI Communications conversation remains in RESET state. (30) When a program started by an incoming conversation startup request issues a tx_commit call before issuing an Accept_Conversation call, a state check results. The tx_commit call has no effect on other conversations in RESET state. (31) Conversations in INITIALIZE, INITIALIZE-INCOMING, or CONFIRM-DEALLOCATE state are not affected by tx_commit and tx_rollback calls. (32) The conversation goes to RESET state if the local program had issued a Deferred_Deallocate call prior to issuing the Commit call. (33) The conversation goes to RESET state if the local program had issued a Deferred_Deallocate call prior to entering PREPARED state. (34) When a program started by an incoming conversation startup request issues a tx_rollback call before issuing an Accept_Conversation call, the underlying conversation is actually backed out, though the CPI Communications conversation remains in RESET state. typedef CM_INT32 CM_MAXIMUM_BUFFER_SIZE; typedef CM_INT32 CM_OOID; typedef CM_INT32 CM_PARTNER_ID_SCOPE; typedef CM_INT32 CM_PARTNER_ID_TYPE; typedef CM_INT32 CM_PREPARE_DATA_PERMITTED_TYPE; typedef CM_INT32 CM_PREPARE_TO_RECEIVE_TYPE; typedef CM_INT32 CM_PROCESSING_MODE; /* also used for queue_processing_mode */ typedef CM_INT32 CM_RECEIVE_TYPE; /* also used for expedited_receive_type */ typedef CM_CONTROL_INFORMATION_RECEIVED CM_REQUEST_TO_SEND_RECEIVED; typedef CM_INT32 CM_RETURN_CODE; typedef CM_INT32 CM_RETURN_CONTROL; typedef CM_INT32 CM_SECURITY_PASSWORD_LENGTH; typedef CM_INT32 CM_SECURITY_USER_ID_LENGTH; typedef CM_INT32 CM_SEND_RECEIVE_MODE; typedef CM_INT32 CM_SEND_TYPE; typedef CM_INT32 CM_STATUS_RECEIVED; typedef CM_INT32 CM_SYNC_LEVEL; typedef CM_INT32 CM_TIMEOUT; typedef CM_INT32 CM_TRANSACTION_CONTROL; /* X/open typedefs for compatibilty */ #if defined(XOPEN_COMPATIBLE) typedef unsigned char CONVERSATION_ID [8]; typedef CM_INT32 CM_RETCODE; typedef CM_INT32 CONVERSATION_SECURITY_TYPE; typedef CM_INT32 CONVERSATION_TYPE; typedef CM_INT32 DATA_RECEIVED; typedef CM_INT32 DEALLOCATE_TYPE; typedef CM_INT32 ERROR_DIRECTION; typedef CM_INT32 PREPARE_TO_RECEIVE_TYPE; typedef CM_INT32 PROCESSING_MODE; typedef CM_INT32 RECEIVE_TYPE; typedef CM_INT32 REQUEST_TO_SEND_RECEIVED; typedef CM_INT32 RETURN_CONTROL; typedef CM_INT32 SEND_TYPE; typedef CM_INT32 STATUS_RECEIVED; typedef CM_INT32 SYNC_LEVEL; #endif /* * Enumerated data types (enum) have not been used for the * constant values because the default type for an enum * is 'int'. This causes type conflicts on compilers where * int is not the same size as CM_INT32. */ /* AE_qual_or_AP_title_format values, used for AE_qualifier_format and AP_title_format parameters */ #define CM_DN (CM_AE_QUAL_OR_AP_TITLE_FORMAT) 0 #define CM_OID (CM_AE_QUAL_OR_AP_TITLE_FORMAT) 1 #define CM_INT_DIGITS (CM_AE_QUAL_OR_AP_TITLE_FORMAT) 2 /* allocate_confirm values */ #define CM_ALLOCATE_NO_CONFIRM (CM_ALLOCATE_CONFIRM_TYPE) 0 #define CM_ALLOCATE_CONFIRM (CM_ALLOCATE_CONFIRM_TYPE) 1 /* begin_transaction values */ #define CM_BEGIN_IMPLICIT (CM_BEGIN_TRANSACTION) 0 #define CM_BEGIN_EXPLICIT (CM_BEGIN_TRANSACTION) 1 /* call_ID values */ #define CM_CMACCI (CM_CALL_ID) 1 #define CM_CMACCP (CM_CALL_ID) 2 #define CM_CMALLC (CM_CALL_ID) 3 #define CM_CMCANC (CM_CALL_ID) 4 #define CM_CMCFM (CM_CALL_ID) 5 #define CM_CMCFMD (CM_CALL_ID) 6 #define CM_CMCNVI (CM_CALL_ID) 7 #define CM_CMCNVO (CM_CALL_ID) 8 #define CM_CMDEAL (CM_CALL_ID) 9 #define CM_CMDFDE (CM_CALL_ID) 10 #define CM_CMEACN (CM_CALL_ID) 11 #define CM_CMEAEQ (CM_CALL_ID) 12 #define CM_CMEAPT (CM_CALL_ID) 13 #define CM_CMECS (CM_CALL_ID) 14 #define CM_CMECT (CM_CALL_ID) 15 #define CM_CMECTX (CM_CALL_ID) 16 #define CM_CMEID (CM_CALL_ID) 17 #define CM_CMEMBS (CM_CALL_ID) 18 #define CM_CMEMN (CM_CALL_ID) 19 #define CM_CMEPID (CM_CALL_ID) 20 #define CM_CMEPLN (CM_CALL_ID) 21 #define CM_CMESI (CM_CALL_ID) 22 #define CM_CMESL (CM_CALL_ID) 23 #define CM_CMESRM (CM_CALL_ID) 24 #define CM_CMESUI (CM_CALL_ID) 25 #define CM_CMETC (CM_CALL_ID) 26 #define CM_CMETPN (CM_CALL_ID) 27 #define CM_CMFLUS (CM_CALL_ID) 28 #define CM_CMINCL (CM_CALL_ID) 29 #define CM_CMINIC (CM_CALL_ID) 30 #define CM_CMINIT (CM_CALL_ID) 31 #define CM_CMPREP (CM_CALL_ID) 32 #define CM_CMPTR (CM_CALL_ID) 33 #define CM_CMRCV (CM_CALL_ID) 34 #define CM_CMRCVX (CM_CALL_ID) 35 #define CM_CMRLTP (CM_CALL_ID) 36 #define CM_CMRTS (CM_CALL_ID) 37 #define CM_CMSAC (CM_CALL_ID) 38 #define CM_CMSACN (CM_CALL_ID) 39 #define CM_CMSAEQ (CM_CALL_ID) 40 #define CM_CMSAPT (CM_CALL_ID) 41 #define CM_CMSBT (CM_CALL_ID) 42 #define CM_CMSCSP (CM_CALL_ID) 43 #define CM_CMSCST (CM_CALL_ID) 44 #define CM_CMSCSU (CM_CALL_ID) 45 #define CM_CMSCT (CM_CALL_ID) 46 #define CM_CMSCU (CM_CALL_ID) 47 #define CM_CMSDT (CM_CALL_ID) 48 #define CM_CMSED (CM_CALL_ID) 49 #define CM_CMSEND (CM_CALL_ID) 50 #define CM_CMSERR (CM_CALL_ID) 51 #define CM_CMSF (CM_CALL_ID) 52 #define CM_CMSID (CM_CALL_ID) 53 #define CM_CMSLD (CM_CALL_ID) 54 #define CM_CMSLTP (CM_CALL_ID) 55 #define CM_CMSMN (CM_CALL_ID) 56 #define CM_CMSNDX (CM_CALL_ID) 57 #define CM_CMSPDP (CM_CALL_ID) 58 #define CM_CMSPID (CM_CALL_ID) 59 #define CM_CMSPLN (CM_CALL_ID) 60 #define CM_CMSPM (CM_CALL_ID) 61 #define CM_CMSPTR (CM_CALL_ID) 62 #define CM_CMSQCF (CM_CALL_ID) 63 #define CM_CMSQPM (CM_CALL_ID) 64 #define CM_CMSRC (CM_CALL_ID) 65 #define CM_CMSRT (CM_CALL_ID) 66 #define CM_CMSSL (CM_CALL_ID) 67 #define CM_CMSSRM (CM_CALL_ID) 68 #define CM_CMSST (CM_CALL_ID) 69 #define CM_CMSTC (CM_CALL_ID) 70 #define CM_CMSTPN (CM_CALL_ID) 71 #define CM_CMTRTS (CM_CALL_ID) 72 #define CM_CMWAIT (CM_CALL_ID) 73 #define CM_CMWCMP (CM_CALL_ID) 74 /* confirmation_urgency values */ #define CM_CONFIRMATION_NOT_URGENT (CM_CONFIRMATION_URGENCY) 0 #define CM_CONFIRMATION_URGENT (CM_CONFIRMATION_URGENCY) 1 /* control_information_received, request_to_send_received values */ /* control_information_received is a superset of the old */ /* request_to_send_received parameter. */ #define CM_NO_CONTROL_INFO_RECEIVED (CM_CONTROL_INFORMATION_RECEIVED) 0 #define CM_REQ_TO_SEND_NOT_RECEIVED (CM_CONTROL_INFORMATION_RECEIVED) 0 #define CM_REQ_TO_SEND_RECEIVED (CM_CONTROL_INFORMATION_RECEIVED) 1 #define CM_ALLOCATE_CONFIRMED (CM_CONTROL_INFORMATION_RECEIVED) 2 #define CM_ALLOCATE_CONFIRMED_WITH_DATA (CM_CONTROL_INFORMATION_RECEIVED) 3 #define CM_ALLOCATE_REJECTED_WITH_DATA (CM_CONTROL_INFORMATION_RECEIVED) 4 #define CM_EXPEDITED_DATA_AVAILABLE (CM_CONTROL_INFORMATION_RECEIVED) 5 #define CM_RTS_RCVD_AND_EXP_DATA_AVAIL (CM_CONTROL_INFORMATION_RECEIVED) 6 /* conversation_queue values */ #define CM_INITIALIZATION_QUEUE (CM_CONVERSATION_QUEUE) 0 #define CM_SEND_QUEUE (CM_CONVERSATION_QUEUE) 1 #define CM_RECEIVE_QUEUE (CM_CONVERSATION_QUEUE) 2 #define CM_SEND_RECEIVE_QUEUE (CM_CONVERSATION_QUEUE) 3 #define CM_EXPEDITED_SEND_QUEUE (CM_CONVERSATION_QUEUE) 4 #define CM_EXPEDITED_RECEIVE_QUEUE (CM_CONVERSATION_QUEUE) 5 /* conversation_state values */ #define CM_INITIALIZE_STATE (CM_CONVERSATION_STATE) 2 #define CM_SEND_STATE (CM_CONVERSATION_STATE) 3 #define CM_RECEIVE_STATE (CM_CONVERSATION_STATE) 4 #define CM_SEND_PENDING_STATE (CM_CONVERSATION_STATE) 5 #define CM_CONFIRM_STATE (CM_CONVERSATION_STATE) 6 #define CM_CONFIRM_SEND_STATE (CM_CONVERSATION_STATE) 7 #define CM_CONFIRM_DEALLOCATE_STATE (CM_CONVERSATION_STATE) 8 #define CM_DEFER_RECEIVE_STATE (CM_CONVERSATION_STATE) 9 #define CM_DEFER_DEALLOCATE_STATE (CM_CONVERSATION_STATE) 10 #define CM_SYNC_POINT_STATE (CM_CONVERSATION_STATE) 11 #define CM_SYNC_POINT_SEND_STATE (CM_CONVERSATION_STATE) 12 #define CM_SYNC_POINT_DEALLOCATE_STATE (CM_CONVERSATION_STATE) 13 #define CM_INITIALIZE_INCOMING_STATE (CM_CONVERSATION_STATE) 14 #define CM_SEND_ONLY_STATE (CM_CONVERSATION_STATE) 15 #define CM_RECEIVE_ONLY_STATE (CM_CONVERSATION_STATE) 16 #define CM_SEND_RECEIVE_STATE (CM_CONVERSATION_STATE) 17 #define CM_PREPARED_STATE (CM_CONVERSATION_STATE) 18 /* conversation_type values */ #define CM_BASIC_CONVERSATION (CM_CONVERSATION_TYPE) 0 #define CM_MAPPED_CONVERSATION (CM_CONVERSATION_TYPE) 1 /* data_received values */ #define CM_NO_DATA_RECEIVED (CM_DATA_RECEIVED_TYPE) 0 #define CM_DATA_RECEIVED (CM_DATA_RECEIVED_TYPE) 1 #define CM_COMPLETE_DATA_RECEIVED (CM_DATA_RECEIVED_TYPE) 2 #define CM_INCOMPLETE_DATA_RECEIVED (CM_DATA_RECEIVED_TYPE) 3 /* deallocate_type values */ #define CM_DEALLOCATE_SYNC_LEVEL (CM_DEALLOCATE_TYPE) 0 #define CM_DEALLOCATE_FLUSH (CM_DEALLOCATE_TYPE) 1 #define CM_DEALLOCATE_CONFIRM (CM_DEALLOCATE_TYPE) 2 #define CM_DEALLOCATE_ABEND (CM_DEALLOCATE_TYPE) 3 /* directory_encoding values */ #define CM_DEFAULT_ENCODING (CM_DIRECTORY_ENCODING) 0 #define CM_UNICODE_ENCODING (CM_DIRECTORY_ENCODING) 1 /* directory_syntax values */ #define CM_DEFAULT_SYNTAX (CM_DIRECTORY_SYNTAX) 0 #define CM_DCE_SYNTAX (CM_DIRECTORY_SYNTAX) 1 #define CM_XDS_SYNTAX (CM_DIRECTORY_SYNTAX) 2 #define CM_NDS_SYNTAX (CM_DIRECTORY_SYNTAX) 3 /* error_direction values */ #define CM_RECEIVE_ERROR (CM_ERROR_DIRECTION) 0 #define CM_SEND_ERROR (CM_ERROR_DIRECTION) 1 /* fill values */ #define CM_FILL_LL (CM_FILL) 0 #define CM_FILL_BUFFER (CM_FILL) 1 /* partner_ID_scope values */ #define CM_EXPLICIT (CM_PARTNER_ID_SCOPE) 0 #define CM_REFERENCE (CM_PARTNER_ID_SCOPE) 1 /* partner_ID_type values */ #define CM_DISTINGUISHED_NAME (CM_PARTNER_ID_TYPE) 0 #define CM_LOCAL_DISTINGUISHED_NAME (CM_PARTNER_ID_TYPE) 1 #define CM_PROGRAM_FUNCTION_ID (CM_PARTNER_ID_TYPE) 2 #define CM_OSI_TPSU_TITLE_OID (CM_PARTNER_ID_TYPE) 3 #define CM_PROGRAM_BINDING (CM_PARTNER_ID_TYPE) 4 /* prepare_data_permitted values */ #define CM_PREPARE_DATA_NOT_PERMITTED (CM_PREPARE_DATA_PERMITTED_TYPE) 0 #define CM_PREPARE_DATA_PERMITTED (CM_PREPARE_DATA_PERMITTED_TYPE) 1 /* prepare_to_receive_type values */ #define CM_PREP_TO_RECEIVE_SYNC_LEVEL (CM_PREPARE_TO_RECEIVE_TYPE) 0 #define CM_PREP_TO_RECEIVE_FLUSH (CM_PREPARE_TO_RECEIVE_TYPE) 1 #define CM_PREP_TO_RECEIVE_CONFIRM (CM_PREPARE_TO_RECEIVE_TYPE) 2 /* processing_mode values */ #define CM_BLOCKING (CM_PROCESSING_MODE) 0 #define CM_NON_BLOCKING (CM_PROCESSING_MODE) 1 /* receive_type values */ #define CM_RECEIVE_AND_WAIT (CM_RECEIVE_TYPE) 0 #define CM_RECEIVE_IMMEDIATE (CM_RECEIVE_TYPE) 1 /* return_code values */ #define CM_OK (CM_RETURN_CODE) 0 #define CM_ALLOCATE_FAILURE_NO_RETRY (CM_RETURN_CODE) 1 #define CM_ALLOCATE_FAILURE_RETRY (CM_RETURN_CODE) 2 #define CM_CONVERSATION_TYPE_MISMATCH (CM_RETURN_CODE) 3 #define CM_PIP_NOT_SPECIFIED_CORRECTLY (CM_RETURN_CODE) 5 #define CM_SECURITY_NOT_VALID (CM_RETURN_CODE) 6 #define CM_SYNC_LVL_NOT_SUPPORTED_LU (CM_RETURN_CODE) 7 #define CM_SYNC_LVL_NOT_SUPPORTED_SYS (CM_RETURN_CODE) 7 /* CPIC 2.0 */ #define CM_SYNC_LVL_NOT_SUPPORTED_PGM (CM_RETURN_CODE) 8 #define CM_TPN_NOT_RECOGNIZED (CM_RETURN_CODE) 9 #define CM_TP_NOT_AVAILABLE_NO_RETRY (CM_RETURN_CODE) 10 #define CM_TP_NOT_AVAILABLE_RETRY (CM_RETURN_CODE) 11 #define CM_DEALLOCATED_ABEND (CM_RETURN_CODE) 17 #define CM_DEALLOCATED_NORMAL (CM_RETURN_CODE) 18 #define CM_PARAMETER_ERROR (CM_RETURN_CODE) 19 #define CM_PRODUCT_SPECIFIC_ERROR (CM_RETURN_CODE) 20 #define CM_PROGRAM_ERROR_NO_TRUNC (CM_RETURN_CODE) 21 #define CM_PROGRAM_ERROR_PURGING (CM_RETURN_CODE) 22 #define CM_PROGRAM_ERROR_TRUNC (CM_RETURN_CODE) 23 #define CM_PROGRAM_PARAMETER_CHECK (CM_RETURN_CODE) 24 #define CM_PROGRAM_STATE_CHECK (CM_RETURN_CODE) 25 #define CM_RESOURCE_FAILURE_NO_RETRY (CM_RETURN_CODE) 26 #define CM_RESOURCE_FAILURE_RETRY (CM_RETURN_CODE) 27 #define CM_UNSUCCESSFUL (CM_RETURN_CODE) 28 #define CM_DEALLOCATED_ABEND_SVC (CM_RETURN_CODE) 30 #define CM_DEALLOCATED_ABEND_TIMER (CM_RETURN_CODE) 31 #define CM_SVC_ERROR_NO_TRUNC (CM_RETURN_CODE) 32 #define CM_SVC_ERROR_PURGING (CM_RETURN_CODE) 33 #define CM_SVC_ERROR_TRUNC (CM_RETURN_CODE) 34 #define CM_OPERATION_INCOMPLETE (CM_RETURN_CODE) 35 /* CPIC 1.2 */ #define CM_SYSTEM_EVENT (CM_RETURN_CODE) 36 /* CPIC 1.2 */ #define CM_OPERATION_NOT_ACCEPTED (CM_RETURN_CODE) 37 /* CPIC 1.2 */ #define CM_CONVERSATION_ENDING (CM_RETURN_CODE) 38 /* CPIC 2.0 */ #define CM_SEND_RCV_MODE_NOT_SUPPORTED (CM_RETURN_CODE) 39 /* CPIC 2.0 */ #define CM_BUFFER_TOO_SMALL (CM_RETURN_CODE) 40 /* CPIC 2.0 */ #define CM_EXP_DATA_NOT_SUPPORTED (CM_RETURN_CODE) 41 /* CPIC 2.0 */ #define CM_DEALLOC_CONFIRM_REJECT (CM_RETURN_CODE) 42 /* CPIC 2.0 */ #define CM_ALLOCATION_ERROR (CM_RETURN_CODE) 43 /* CPIC 2.0 */ #define CM_RETRY_LIMIT_EXCEEDED (CM_RETURN_CODE) 44 /* CPIC 2.0 */ #define CM_NO_SECONDARY_INFORMATION (CM_RETURN_CODE) 45 /* CPIC 2.0 */ #define CM_SECURITY_NOT_SUPPORTED (CM_RETURN_CODE) 46 /* CPIC 2.0 */ #define CM_SECURITY_MUTUAL_FAILED (CM_RETURN_CODE) 47 /* CPIC 2.0 */ #define CM_CALL_NOT_SUPPORTED (CM_RETURN_CODE) 48 /* CPIC 2.0 */ #define CM_PARM_VALUE_NOT_SUPPORTED (CM_RETURN_CODE) 49 /* CPIC 2.0 */ #define CM_TAKE_BACKOUT (CM_RETURN_CODE) 100 #define CM_DEALLOCATED_ABEND_BO (CM_RETURN_CODE) 130 #define CM_DEALLOCATED_ABEND_SVC_BO (CM_RETURN_CODE) 131 #define CM_DEALLOCATED_ABEND_TIMER_BO (CM_RETURN_CODE) 132 #define CM_RESOURCE_FAIL_NO_RETRY_BO (CM_RETURN_CODE) 133 #define CM_RESOURCE_FAILURE_RETRY_BO (CM_RETURN_CODE) 134 #define CM_DEALLOCATED_NORMAL_BO (CM_RETURN_CODE) 135 #define CM_CONV_DEALLOC_AFTER_SYNCPT (CM_RETURN_CODE) 136 /* CPIC 2.0 */ #define CM_INCLUDE_PARTNER_REJECT_BO (CM_RETURN_CODE) 137 /* CPIC 2.0 */ /* return_control values */ #define CM_WHEN_SESSION_ALLOCATED (CM_RETURN_CONTROL) 0 #define CM_IMMEDIATE (CM_RETURN_CONTROL) 1 /* send_receive_mode values */ #define CM_HALF_DUPLEX (CM_SEND_RECEIVE_MODE) 0 #define CM_FULL_DUPLEX (CM_SEND_RECEIVE_MODE) 1 /* send_type values */ #define CM_BUFFER_DATA (CM_SEND_TYPE) 0 #define CM_SEND_AND_FLUSH (CM_SEND_TYPE) 1 #define CM_SEND_AND_CONFIRM (CM_SEND_TYPE) 2 #define CM_SEND_AND_PREP_TO_RECEIVE (CM_SEND_TYPE) 3 #define CM_SEND_AND_DEALLOCATE (CM_SEND_TYPE) 4 /* status_received values */ #define CM_NO_STATUS_RECEIVED (CM_STATUS_RECEIVED) 0 #define CM_SEND_RECEIVED (CM_STATUS_RECEIVED) 1 #define CM_CONFIRM_RECEIVED (CM_STATUS_RECEIVED) 2 #define CM_CONFIRM_SEND_RECEIVED (CM_STATUS_RECEIVED) 3 #define CM_CONFIRM_DEALLOC_RECEIVED (CM_STATUS_RECEIVED) 4 #define CM_TAKE_COMMIT (CM_STATUS_RECEIVED) 5 #define CM_TAKE_COMMIT_SEND (CM_STATUS_RECEIVED) 6 #define CM_TAKE_COMMIT_DEALLOCATE (CM_STATUS_RECEIVED) 7 #define CM_TAKE_COMMIT_DATA_OK (CM_STATUS_RECEIVED) 8 #define CM_TAKE_COMMIT_SEND_DATA_OK (CM_STATUS_RECEIVED) 9 #define CM_TAKE_COMMIT_DEALLOC_DATA_OK (CM_STATUS_RECEIVED) 10 #define CM_PREPARE_OK (CM_STATUS_RECEIVED) 11 #define CM_JOIN_TRANSACTION (CM_STATUS_RECEIVED) 12 /* sync_level values */ #define CM_NONE (CM_SYNC_LEVEL) 0 #define CM_CONFIRM (CM_SYNC_LEVEL) 1 #define CM_SYNC_POINT (CM_SYNC_LEVEL) 2 #define CM_SYNC_POINT_NO_CONFIRM (CM_SYNC_LEVEL) 3 /* conversation_security_type values */ #define CM_SECURITY_NONE (CM_CONVERSATION_SECURITY_TYPE) 0 #define CM_SECURITY_SAME (CM_CONVERSATION_SECURITY_TYPE) 1 #define CM_SECURITY_PROGRAM (CM_CONVERSATION_SECURITY_TYPE) 2 #define CM_SECURITY_DISTRIBUTED (CM_CONVERSATION_SECURITY_TYPE) 3 #define CM_SECURITY_MUTUAL (CM_CONVERSATION_SECURITY_TYPE) 4 #define CM_SECURITY_PROGRAM_STRONG (CM_CONVERSATION_SECURITY_TYPE) 5 /* transaction_control values */ #define CM_CHAINED_TRANSACTIONS (CM_TRANSACTION_CONTROL) 0 #define CM_UNCHAINED_TRANSACTIONS (CM_TRANSACTION_CONTROL) 1 /* maximum sizes of strings and buffers */ #define CM_CID_SIZE (8) /* conversation ID */ #define CM_CTX_SIZE (32) /* context ID */ #define CM_LD_SIZE (512) /* log data */ #define CM_MN_SIZE (8) /* mode name */ #define CM_PLN_SIZE (17) /* partner LU name */ #define CM_PW_SIZE (10) /* password */ #define CM_SDN_SIZE (8) /* symbolic destination name */ #define CM_TPN_SIZE (64) /* TP name */ #define CM_UID_SIZE (10) /* userid ID */ /* * - Base CPI-C function prototypes */ #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ CM_ENTRY cmacci(unsigned char CM_PTR, /* conversation_ID */ CM_RETURN_CODE CM_PTR); /* return_code */ CM_ENTRY cmaccp(unsigned char CM_PTR, /* conversation_ID */ CM_RETURN_CODE CM_PTR); /* return_code */ CM_ENTRY cmallc(unsigned char CM_PTR, /* conversation_ID */ CM_RETURN_CODE CM_PTR); /* return_code */ CM_ENTRY cmcanc(unsigned char CM_PTR, /* conversation_ID */ CM_RETURN_CODE CM_PTR); /* return_code */ CM_ENTRY cmcfm( unsigned char CM_PTR, /* conversation_ID */ CM_CONTROL_INFORMATION_RECEIVED CM_PTR, /* control_information_received */ CM_RETURN_CODE CM_PTR); /* return_code */ CM_ENTRY cmcfmd(unsigned char CM_PTR, /* conversation_ID */ CM_RETURN_CODE CM_PTR); /* return_code */ CM_ENTRY cmcnvi(unsigned char CM_PTR, /* buffer */ CM_INT32 CM_PTR, /* buffer_length */ CM_RETURN_CODE CM_PTR); /* return_code */ CM_ENTRY cmcnvo(unsigned char CM_PTR, /* buffer */ CM_INT32 CM_PTR, /* buffer_length */ CM_RETURN_CODE CM_PTR); /* return_code */ CM_ENTRY cmdeal(unsigned char CM_PTR, /* conversation_ID */ CM_RETURN_CODE CM_PTR); /* return_code */ CM_ENTRY cmdfde(unsigned char CM_PTR, /* conversation_ID */ CM_RETURN_CODE CM_PTR); /* return_code */ CM_ENTRY cmeaeq(unsigned char CM_PTR, /* conversation_ID */ unsigned char CM_PTR, /* AE_qualifier */ CM_INT32 CM_PTR, /* AE_qualifier_length */ CM_AE_QUAL_OR_AP_TITLE_FORMAT CM_PTR, /* AP_title format */ CM_RETURN_CODE CM_PTR); /* return_code */ CM_ENTRY cmeapt(unsigned char CM_PTR, /* conversation_ID */ unsigned char CM_PTR, /* AP_title */ CM_INT32 CM_PTR, /* AP_title length */ CM_AE_QUAL_OR_AP_TITLE_FORMAT CM_PTR, /* AP_title format */ CM_RETURN_CODE CM_PTR); /* return_code */ CM_ENTRY cmeacn(unsigned char CM_PTR, /* conversation_ID */ unsigned char CM_PTR, /* application_context_name*/ CM_INT32 CM_PTR, /* appl_context_name_length*/ CM_RETURN_CODE CM_PTR); /* return_code */ CM_ENTRY cmecs( unsigned char CM_PTR, /* conversation_ID */ CM_CONVERSATION_STATE CM_PTR, /* conversation_state */ CM_RETURN_CODE CM_PTR); /* return_code */ CM_ENTRY cmect( unsigned char CM_PTR, /* conversation_ID */ CM_CONVERSATION_TYPE CM_PTR, /* conversation_type */ CM_RETURN_CODE CM_PTR); /* return_code */ CM_ENTRY cmectx(unsigned char CM_PTR, /* conversation_ID */ unsigned char CM_PTR, /* context_ID */ CM_INT32 CM_PTR, /* context_ID_length */ CM_RETURN_CODE CM_PTR); /* return_code */ CM_ENTRY cmeid( unsigned char CM_PTR, /* conversation_ID */ unsigned char CM_PTR, /* initialization_data */ CM_INT32 CM_PTR, /* requested_length */ CM_INT32 CM_PTR, /* initialization_data_leng*/ CM_RETURN_CODE CM_PTR); /* return_code */ CM_ENTRY cmembs(CM_INT32 CM_PTR, /* maximum_buffer_size */ CM_RETURN_CODE CM_PTR); /* return_code */ CM_ENTRY cmemn( unsigned char CM_PTR, /* conversation_ID */ unsigned char CM_PTR, /* mode_name */ CM_INT32 CM_PTR, /* mode_name_length */ CM_RETURN_CODE CM_PTR); /* return_code */ CM_ENTRY cmepid(unsigned char CM_PTR, /* conversation_ID */ CM_PARTNER_ID_TYPE CM_PTR, /* partner_ID_type */ unsigned char CM_PTR, /* partner_ID */ CM_INT32 CM_PTR, /* requested_length */ CM_INT32 CM_PTR, /* partner_ID_length */ CM_PARTNER_ID_SCOPE CM_PTR, /* partner_ID_scope */ CM_DIRECTORY_SYNTAX CM_PTR, /* directory_syntax */ CM_DIRECTORY_ENCODING CM_PTR, /* directory_encoding */ CM_RETURN_CODE CM_PTR); /* return_code */ CM_ENTRY cmepln(unsigned char CM_PTR, /* conversation_ID */ unsigned char CM_PTR, /* partner_LU_name */ CM_INT32 CM_PTR, /* partner_LU_name_length */ CM_RETURN_CODE CM_PTR); /* return_code */ CM_ENTRY cmesi( unsigned char CM_PTR, /* conversation_ID */ CM_INT32 CM_PTR, /* call_ID */ unsigned char CM_PTR, /* buffer */ CM_INT32 CM_PTR, /* requested_length */ CM_DATA_RECEIVED_TYPE CM_PTR, /* data_received */ CM_INT32 CM_PTR, /* received_length */ CM_RETURN_CODE CM_PTR); /* return_code */ CM_ENTRY cmesl( unsigned char CM_PTR, /* conversation_ID */ CM_SYNC_LEVEL CM_PTR, /* sync_level */ CM_RETURN_CODE CM_PTR); /* return_code */ CM_ENTRY cmesrm(unsigned char CM_PTR, /* conversation_ID */ CM_SEND_RECEIVE_MODE CM_PTR, /* send_receive_mode */ CM_RETURN_CODE CM_PTR); /* return_code */ CM_ENTRY cmesui(unsigned char CM_PTR, /* conversation_ID */ unsigned char CM_PTR, /* user_ID */ CM_INT32 CM_PTR, /* user_ID_length */ CM_RETURN_CODE CM_PTR); /* return_code */ CM_ENTRY cmetc( unsigned char CM_PTR, /* conversation_ID */ CM_TRANSACTION_CONTROL CM_PTR, /* transaction_control */ CM_RETURN_CODE CM_PTR); /* return_code */ CM_ENTRY cmetpn(unsigned char CM_PTR, /* conversation_ID */ unsigned char CM_PTR, /* TP_name */ CM_INT32 CM_PTR, /* TP_name_length */ CM_RETURN_CODE CM_PTR); /* return_code */ CM_ENTRY cmflus(unsigned char CM_PTR, /* conversation_ID */ CM_RETURN_CODE CM_PTR); /* return_code */ CM_ENTRY cmincl(unsigned char CM_PTR, /* conversation_ID */ CM_RETURN_CODE CM_PTR); /* return_code */ CM_ENTRY cminic(unsigned char CM_PTR, /* conversation_ID */ CM_RETURN_CODE CM_PTR); /* return_code */ CM_ENTRY cminit(unsigned char CM_PTR, /* conversation_ID */ unsigned char CM_PTR, /* sym_dest_name */ CM_RETURN_CODE CM_PTR); /* return_code */ CM_ENTRY cmprep(unsigned char CM_PTR, /* conversation_ID */ CM_RETURN_CODE CM_PTR); /* return_code */ CM_ENTRY cmptr( unsigned char CM_PTR, /* conversation_ID */ CM_RETURN_CODE CM_PTR); /* return_code */ CM_ENTRY cmrcv( unsigned char CM_PTR, /* conversation_ID */ unsigned char CM_PTR, /* buffer */ CM_INT32 CM_PTR, /* requested_length */ CM_DATA_RECEIVED_TYPE CM_PTR, /* data_received */ CM_INT32 CM_PTR, /* received_length */ CM_STATUS_RECEIVED CM_PTR, /* status_received */ CM_CONTROL_INFORMATION_RECEIVED CM_PTR, /* control_information_received */ CM_RETURN_CODE CM_PTR); /* return_code */ CM_ENTRY cmrcvx(unsigned char CM_PTR, /* conversation_ID */ unsigned char CM_PTR, /* buffer */ CM_INT32 CM_PTR, /* requested_length */ CM_INT32 CM_PTR, /* received_length */ CM_CONTROL_INFORMATION_RECEIVED CM_PTR, /* control_information_received */ CM_RECEIVE_TYPE CM_PTR, /* expedited_receive_type */ CM_RETURN_CODE CM_PTR); /* return_code */ CM_ENTRY cmrltp(unsigned char CM_PTR, /* TP_name */ CM_INT32 CM_PTR, /* TP_name_length */ CM_RETURN_CODE CM_PTR); /* return_code */ CM_ENTRY cmrts( unsigned char CM_PTR, /* conversation_ID */ CM_RETURN_CODE CM_PTR); /* return_code */ CM_ENTRY cmsaeq(unsigned char CM_PTR, /* conversation_ID */ unsigned char CM_PTR, /* AE_qualifier */ CM_INT32 CM_PTR, /* AE_qualifier length */ CM_AE_QUAL_OR_AP_TITLE_FORMAT CM_PTR, /* AP_title format */ CM_RETURN_CODE CM_PTR); /* return_code */ CM_ENTRY cmsac( unsigned char CM_PTR, /* conversation_ID */ CM_ALLOCATE_CONFIRM_TYPE CM_PTR, /* allocate_confirm */ CM_RETURN_CODE CM_PTR); /* return_code */ CM_ENTRY cmsacn(unsigned char CM_PTR, /* conversation_ID */ unsigned char CM_PTR, /* application_context_name*/ CM_INT32 CM_PTR, /* appl_context_name_length*/ CM_RETURN_CODE CM_PTR); /* return_code */ CM_ENTRY cmsapt(unsigned char CM_PTR, /* conversation_ID */ unsigned char CM_PTR, /* AP_title */ CM_INT32 CM_PTR, /* AP_title_length */ CM_AE_QUAL_OR_AP_TITLE_FORMAT CM_PTR, /* AP_title format */ CM_RETURN_CODE CM_PTR); /* return_code */ CM_ENTRY cmsbt( unsigned char CM_PTR, /* conversation_ID */ CM_BEGIN_TRANSACTION CM_PTR, /* begin_transaction */ CM_RETURN_CODE CM_PTR); /* return_code */ CM_ENTRY cmscsp(unsigned char CM_PTR, /* conversation_ID */ unsigned char CM_PTR, /* password */ CM_INT32 CM_PTR, /* password_length */ CM_RETURN_CODE CM_PTR); /* return_code */ CM_ENTRY cmscst(unsigned char CM_PTR, /* conversation_ID */ CM_CONVERSATION_SECURITY_TYPE CM_PTR, /* conv_security_type */ CM_RETURN_CODE CM_PTR); /* return_code */ CM_ENTRY cmscsu(unsigned char CM_PTR, /* conversation_ID */ unsigned char CM_PTR, /* user_ID */ CM_INT32 CM_PTR, /* user_ID_length */ CM_RETURN_CODE CM_PTR); /* return_code */ CM_ENTRY cmsct( unsigned char CM_PTR, /* conversation_ID */ CM_CONVERSATION_TYPE CM_PTR, /* conversation_type */ CM_RETURN_CODE CM_PTR); /* return_code */ CM_ENTRY cmscu( unsigned char CM_PTR, /* conversation_ID */ CM_CONFIRMATION_URGENCY CM_PTR, /* confirmation_urgency */ CM_RETURN_CODE CM_PTR); /* return_code */ CM_ENTRY cmsdt( unsigned char CM_PTR, /* conversation_ID */ CM_DEALLOCATE_TYPE CM_PTR, /* deallocate_type */ CM_RETURN_CODE CM_PTR); /* return_code */ CM_ENTRY cmsed( unsigned char CM_PTR, /* conversation_ID */ CM_ERROR_DIRECTION CM_PTR, /* error_direction */ CM_RETURN_CODE CM_PTR); /* return_code */ CM_ENTRY cmsend(unsigned char CM_PTR, /* conversation_ID */ unsigned char CM_PTR, /* buffer */ CM_INT32 CM_PTR, /* send_length */ CM_CONTROL_INFORMATION_RECEIVED CM_PTR, /* control_information_received */ CM_RETURN_CODE CM_PTR); /* return_code */ CM_ENTRY cmserr(unsigned char CM_PTR, /* conversation_ID */ CM_CONTROL_INFORMATION_RECEIVED CM_PTR, /* control_information_received */ CM_RETURN_CODE CM_PTR); /* return_code */ CM_ENTRY cmsf( unsigned char CM_PTR, /* conversation_ID */ CM_FILL CM_PTR, /* fill */ CM_RETURN_CODE CM_PTR); /* return_code */ CM_ENTRY cmsid( unsigned char CM_PTR, /* conversation_ID */ unsigned char CM_PTR, /* initialization_data */ CM_INT32 CM_PTR, /* init_data length */ CM_RETURN_CODE CM_PTR); /* return_code */ CM_ENTRY cmsld( unsigned char CM_PTR, /* conversation_ID */ unsigned char CM_PTR, /* log_data */ CM_INT32 CM_PTR, /* log_data_length */ CM_RETURN_CODE CM_PTR); /* return_code */ CM_ENTRY cmsltp(unsigned char CM_PTR, /* TP_name */ CM_INT32 CM_PTR, /* TP_name_length */ CM_RETURN_CODE CM_PTR); /* return_code */ CM_ENTRY cmsmn( unsigned char CM_PTR, /* conversation_ID */ unsigned char CM_PTR, /* mode_name */ CM_INT32 CM_PTR, /* mode_name_length */ CM_RETURN_CODE CM_PTR); /* return_code */ CM_ENTRY cmsndx(unsigned char CM_PTR, /* conversation_ID */ unsigned char CM_PTR, /* buffer */ CM_INT32 CM_PTR, /* send_length */ CM_CONTROL_INFORMATION_RECEIVED CM_PTR, /* control_information_received */ CM_RETURN_CODE CM_PTR); /* return_code */ CM_ENTRY cmspdp(unsigned char CM_PTR, /* conversation_ID */ CM_PREPARE_DATA_PERMITTED_TYPE CM_PTR, /* prepare_data_permitted */ CM_RETURN_CODE CM_PTR); /* return_code */ CM_ENTRY cmspid(unsigned char CM_PTR, /* conversation_ID */ CM_PARTNER_ID_TYPE CM_PTR, /* partner_ID_type */ unsigned char CM_PTR, /* partner_ID */ CM_INT32 CM_PTR, /* partner_ID_length */ CM_PARTNER_ID_SCOPE CM_PTR, /* partner_ID_scope */ CM_DIRECTORY_SYNTAX CM_PTR, /* directory_syntax */ CM_DIRECTORY_ENCODING CM_PTR, /* directory_encoding */ CM_RETURN_CODE CM_PTR); /* return_code */ CM_ENTRY cmspln(unsigned char CM_PTR, /* conversation_ID */ unsigned char CM_PTR, /* partner_LU_name */ CM_INT32 CM_PTR, /* partner_LU_name_length */ CM_RETURN_CODE CM_PTR); /* return_code */ CM_ENTRY cmspm( unsigned char CM_PTR, /* conversation_ID */ CM_PROCESSING_MODE CM_PTR, /* processing_mode */ CM_RETURN_CODE CM_PTR); /* return_code */ CM_ENTRY cmsptr(unsigned char CM_PTR, /* conversation_ID */ CM_PREPARE_TO_RECEIVE_TYPE CM_PTR, /* prepare_to_receive_type */ CM_RETURN_CODE CM_PTR); /* return_code */ CM_ENTRY cmsqcf(unsigned char CM_PTR, /* conversation_ID */ CM_CONVERSATION_QUEUE CM_PTR, /* conversation_queue */ void CM_PTR, /* callback_function */ unsigned char CM_PTR, /* user_field */ CM_RETURN_CODE CM_PTR); /* return_code */ CM_ENTRY cmsqpm(unsigned char CM_PTR, /* conversation_ID */ CM_CONVERSATION_QUEUE CM_PTR, /* conversation_queue */ CM_PROCESSING_MODE CM_PTR, /* queue_processing_mode */ unsigned char CM_PTR, /* user_field */ CM_OOID CM_PTR, /* OOID */ CM_RETURN_CODE CM_PTR); /* return_code */ CM_ENTRY cmsrc( unsigned char CM_PTR, /* conversation_ID */ CM_RETURN_CONTROL CM_PTR, /* return_control */ CM_RETURN_CODE CM_PTR); /* return_code */ CM_ENTRY cmsrt( unsigned char CM_PTR, /* conversation_ID */ CM_RECEIVE_TYPE CM_PTR, /* receive_type */ CM_RETURN_CODE CM_PTR); /* return_code */ CM_ENTRY cmssl( unsigned char CM_PTR, /* conversation_ID */ CM_SYNC_LEVEL CM_PTR, /* sync_level */ CM_RETURN_CODE CM_PTR); /* return_code */ CM_ENTRY cmssrm(unsigned char CM_PTR, /* conversation_ID */ CM_SEND_RECEIVE_MODE CM_PTR, /* send_receive_mode */ CM_RETURN_CODE CM_PTR); /* return_code */ CM_ENTRY cmsst( unsigned char CM_PTR, /* conversation_ID */ CM_SEND_TYPE CM_PTR, /* send_type */ CM_RETURN_CODE CM_PTR); /* return_code */ CM_ENTRY cmstc( unsigned char CM_PTR, /* conversation_ID */ CM_TRANSACTION_CONTROL CM_PTR, /* transaction_control */ CM_RETURN_CODE CM_PTR); /* return_code */ CM_ENTRY cmstpn(unsigned char CM_PTR, /* conversation_ID */ unsigned char CM_PTR, /* TP_name */ CM_INT32 CM_PTR, /* TP_name_length */ CM_RETURN_CODE CM_PTR); /* return_code */ CM_ENTRY cmtrts(unsigned char CM_PTR, /* conversation_ID */ CM_CONTROL_INFORMATION_RECEIVED CM_PTR, /* control_information_received */ CM_RETURN_CODE CM_PTR); /* return_code */ CM_ENTRY cmwait(unsigned char CM_PTR, /* conversation_ID */ CM_RETURN_CODE CM_PTR, /* conversation_ret_code */ CM_RETURN_CODE CM_PTR); /* return_code */ CM_ENTRY cmwcmp(CM_OOID CM_PTR, /* OOID_list */ CM_INT32 CM_PTR, /* OOID_list_count */ CM_INT32 CM_PTR, /* timeout */ CM_INT32 CM_PTR, /* completed_op_index_list */ CM_INT32 CM_PTR, /* completed_op_count */ unsigned char CM_PTR, /* user_field_list */ CM_RETURN_CODE CM_PTR); /* return_code */ #ifdef __cplusplus } #endif /* __cplusplus */ #endif /* ********************* End of Pseudonyms ********************** */ ------------------------------ COBOL Pseudonym File (CMCOBOL) * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * CPI COMMUNICATIONS PSEUDONYMS -- SC31-6180-01 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * NOTE: BUFFER MUST BE DEFINED IN WORKING STORAGE * * 01 AE-QUALIFIER PIC X(1024). * 0-1024 BYTES * * AE-QUALIFIER-FORMAT USES AE-QUAL-OR-AP-TITLE-FORMAT VALUES * 01 AE-QUAL-OR-AP-TITLE-FORMAT PIC 9(9) COMP-4. 88 CM-DN VALUE 0. 88 CM-OID VALUE 1. 88 CM-INT-DIGITS VALUE 2. * 01 AE-QUALIFIER-LENGTH PIC 9(9) COMP-4. * 01 ALLOCATE-CONFIRM PIC 9(9) COMP-4. 88 CM-ALLOCATE-NO-CONFIRM VALUE 0. 88 CM-ALLOCATE-CONFIRM VALUE 1. * 01 APPLICATION-CONTEXT-NAME PIC X(256). * 0-256 BYTES * 01 APPLICATION-CONTEXT-NAME-LEN PIC 9(9) COMP-4. * 01 AP-TITLE PIC X(1024). * 0-1024 BYTES * * AP-TITLE-FORMAT USES AE-QUAL-OR-AP-TITLE-FORMAT VALUES * 01 AP-TITLE-LENGTH PIC 9(9) COMP-4. * 01 BEGIN-TRANSACTION PIC 9(9) COMP-4. 88 CM-BEGIN-IMPLICIT VALUE 0. 88 CM-BEGIN-EXPLICIT VALUE 1. * 01 BUFFER-LENGTH PIC 9(9) COMP-4. * 01 CALL-ID PIC 9(9) COMP-4. 88 CM-CMACCI VALUE 1. 88 CM-CMACCP VALUE 2. 88 CM-CMALLC VALUE 3. 88 CM-CMCANC VALUE 4. 88 CM-CMCFM VALUE 5. 88 CM-CMCFMD VALUE 6. 88 CM-CMCNVI VALUE 7. 88 CM-CMCNVO VALUE 8. 88 CM-CMDEAL VALUE 9. 88 CM-CMDFDE VALUE 10. 88 CM-CMEACN VALUE 11. 88 CM-CMEAEQ VALUE 12. 88 CM-CMEAPT VALUE 13. 88 CM-CMECS VALUE 14. 88 CM-CMECT VALUE 15. 88 CM-CMECTX VALUE 16. 88 CM-CMEID VALUE 17. 88 CM-CMEMBS VALUE 18. 88 CM-CMEMN VALUE 19. 88 CM-CMEPID VALUE 20. 88 CM-CMEPLN VALUE 21. 88 CM-CMESI VALUE 22. 88 CM-CMESL VALUE 23. 88 CM-CMESRM VALUE 24. 88 CM-CMESUI VALUE 25. 88 CM-CMETC VALUE 26. 88 CM-CMETPN VALUE 27. 88 CM-CMFLUS VALUE 28. 88 CM-CMINCL VALUE 29. 88 CM-CMINIC VALUE 30. 88 CM-CMINIT VALUE 31. 88 CM-CMPREP VALUE 32. 88 CM-CMPTR VALUE 33. 88 CM-CMRCV VALUE 34. 88 CM-CMRCVX VALUE 35. 88 CM-CMRLTP VALUE 36. 88 CM-CMRTS VALUE 37. 88 CM-CMSAC VALUE 38. 88 CM-CMSACN VALUE 39. 88 CM-CMSAEQ VALUE 40. 88 CM-CMSAPT VALUE 41. 88 CM-CMSBT VALUE 42. 88 CM-CMSCSP VALUE 43. 88 CM-CMSCST VALUE 44. 88 CM-CMSCSU VALUE 45. 88 CM-CMSCT VALUE 46. 88 CM-CMSCU VALUE 47. 88 CM-CMSDT VALUE 48. 88 CM-CMSED VALUE 49. 88 CM-CMSEND VALUE 50. 88 CM-CMSERR VALUE 51. 88 CM-CMSF VALUE 52. 88 CM-CMSID VALUE 53. 88 CM-CMSLD VALUE 54. 88 CM-CMSLTP VALUE 55. 88 CM-CMSMN VALUE 56. 88 CM-CMSNDX VALUE 57. 88 CM-CMSPDP VALUE 58. 88 CM-CMSPID VALUE 59. 88 CM-CMSPLN VALUE 60. 88 CM-CMSPM VALUE 61. 88 CM-CMSPTR VALUE 62. 88 CM-CMSQCF VALUE 63. 88 CM-CMSQPM VALUE 64. 88 CM-CMSRC VALUE 65. 88 CM-CMSRT VALUE 66. 88 CM-CMSSL VALUE 67. 88 CM-CMSSRM VALUE 68. 88 CM-CMSST VALUE 69. 88 CM-CMSTC VALUE 70. 88 CM-CMSTPN VALUE 71. 88 CM-CMTRTS VALUE 72. 88 CM-CMWAIT VALUE 73. 88 CM-CMWCMP VALUE 74. * 01 COMPLETED-OP-COUNT PIC 9(9) COMP-4. * 01 CONFIRMATION-URGENCY PIC 9(9) COMP-4. 88 CM-CONFIRMATION-NOT-URGENT VALUE 0. 88 CM-CONFIRMATION-URGENT VALUE 1. * 01 CONTEXT-ID PIC X(32). * 0-32 BYTES * 01 CONTEXT-ID-LENGTH PIC 9(9) COMP-4. * * CONTROL-INFORMATION-RECEIVED USES REQUEST-SEND-RECEIVED VALUES * 01 CONVERSATION-ID PIC X(8). * 8 BYTES * 01 CONVERSATION-QUEUE PIC 9(9) COMP-4. 88 CM-INITIALIZATION-QUEUE VALUE 0. 88 CM-SEND-QUEUE VALUE 1. 88 CM-RECEIVE-QUEUE VALUE 2. 88 CM-SEND-RECEIVE-QUEUE VALUE 3. 88 CM-EXPEDITED-SEND-QUEUE VALUE 4. 88 CM-EXPEDITED-RECEIVE-QUEUE VALUE 5. * 01 CONVERSATION-STATE PIC 9(9) COMP-4. 88 CM-INITIALIZE-STATE VALUE 2. 88 CM-SEND-STATE VALUE 3. 88 CM-RECEIVE-STATE VALUE 4. 88 CM-SEND-PENDING-STATE VALUE 5. 88 CM-CONFIRM-STATE VALUE 6. 88 CM-CONFIRM-SEND-STATE VALUE 7. 88 CM-CONFIRM-DEALLOCATE-STATE VALUE 8. 88 CM-DEFER-RECEIVE-STATE VALUE 9. 88 CM-DEFER-DEALLOCATE-STATE VALUE 10. 88 CM-SYNC-POINT-STATE VALUE 11. 88 CM-SYNC-POINT-SEND-STATE VALUE 12. 88 CM-SYNC-POINT-DEALLOCATE-STATE VALUE 13. 88 CM-INITIALIZE-INCOMING-STATE VALUE 14. 88 CM-SEND-ONLY-STATE VALUE 15. 88 CM-RECEIVE-ONLY-STATE VALUE 16. 88 CM-SEND-RECEIVE-STATE VALUE 17. 88 CM-PREPARED-STATE VALUE 18. * 01 CONVERSATION-TYPE PIC 9(9) COMP-4. 88 CM-BASIC-CONVERSATION VALUE 0. 88 CM-MAPPED-CONVERSATION VALUE 1. * 01 CONVERSATION-SECURITY-TYPE PIC 9(9) COMP-4. 88 CM-SECURITY-NONE VALUE 0. 88 CM-SECURITY-SAME VALUE 1. 88 CM-SECURITY-PROGRAM VALUE 2. 88 CM-SECURITY-DISTRIBUTED VALUE 3. 88 CM-SECURITY-MUTUAL VALUE 4. 88 CM-SECURITY-PROGRAM-STRONG VALUE 5. * 01 CM-RETCODE PIC 9(9) COMP-4. * ===> RETURN-CODE IS A RESERVED WORD IN SOME <=== * ===> VERSIONS OF COBOL <=== * ******* THIS PARAMETER ALSO USED FOR *************** * CONVERSATION-RETURN-CODE PARAMETER * 88 CM-OK VALUE 0. 88 CM-ALLOCATE-FAILURE-NO-RETRY VALUE 1. 88 CM-ALLOCATE-FAILURE-RETRY VALUE 2. 88 CM-CONVERSATION-TYPE-MISMATCH VALUE 3. 88 CM-PIP-NOT-SPECIFIED-CORRECTLY VALUE 5. 88 CM-SECURITY-NOT-VALID VALUE 6. 88 CM-SYNC-LVL-NOT-SUPPORTED-LU VALUE 7. 88 CM-SYNC-LVL-NOT-SUPPORTED-SYS VALUE 7. 88 CM-SYNC-LVL-NOT-SUPPORTED-PGM VALUE 8. 88 CM-TPN-NOT-RECOGNIZED VALUE 9. 88 CM-TP-NOT-AVAILABLE-NO-RETRY VALUE 10. 88 CM-TP-NOT-AVAILABLE-RETRY VALUE 11. 88 CM-DEALLOCATED-ABEND VALUE 17. 88 CM-DEALLOCATED-NORMAL VALUE 18. 88 CM-PARAMETER-ERROR VALUE 19. 88 CM-PRODUCT-SPECIFIC-ERROR VALUE 20. 88 CM-PROGRAM-ERROR-NO-TRUNC VALUE 21. 88 CM-PROGRAM-ERROR-PURGING VALUE 22. 88 CM-PROGRAM-ERROR-TRUNC VALUE 23. 88 CM-PROGRAM-PARAMETER-CHECK VALUE 24. 88 CM-PROGRAM-STATE-CHECK VALUE 25. 88 CM-RESOURCE-FAILURE-NO-RETRY VALUE 26. 88 CM-RESOURCE-FAILURE-RETRY VALUE 27. 88 CM-UNSUCCESSFUL VALUE 28. 88 CM-DEALLOCATED-ABEND-SVC VALUE 30. 88 CM-DEALLOCATED-ABEND-TIMER VALUE 31. 88 CM-SVC-ERROR-NO-TRUNC VALUE 32. 88 CM-SVC-ERROR-PURGING VALUE 33. 88 CM-SVC-ERROR-TRUNC VALUE 34. 88 CM-OPERATION-INCOMPLETE VALUE 35. 88 CM-SYSTEM-EVENT VALUE 36. 88 CM-OPERATION-NOT-ACCEPTED VALUE 37. 88 CM-CONVERSATION-ENDING VALUE 38. 88 CM-SEND-RCV-MODE-NOT-SUPPORTED VALUE 39. 88 CM-BUFFER-TOO-SMALL VALUE 40. 88 CM-EXP-DATA-NOT-SUPPORTED VALUE 41. 88 CM-DEALLOC-CONFIRM-REJECT VALUE 42. 88 CM-ALLOCATION-ERROR VALUE 43. 88 CM-RETRY-LIMIT-EXCEEDED VALUE 44. 88 CM-NO-SECONDARY-INFORMATION VALUE 45. 88 CM-SECURITY-NOT-SUPPORTED VALUE 46. 88 CM-SECURITY-MUTUAL-FAILED VALUE 47. 88 CM-CALL-NOT-SUPPORTED VALUE 48. 88 CM-PARM-VALUE-NOT-SUPPORTED VALUE 49. 88 CM-TAKE-BACKOUT VALUE 100. 88 CM-DEALLOCATED-ABEND-BO VALUE 130. 88 CM-DEALLOCATED-ABEND-SVC-BO VALUE 131. 88 CM-DEALLOCATED-ABEND-TIMER-BO VALUE 132. 88 CM-RESOURCE-FAIL-NO-RETRY-BO VALUE 133. 88 CM-RESOURCE-FAILURE-RETRY-BO VALUE 134. 88 CM-DEALLOCATED-NORMAL-BO VALUE 135. 88 CM-CONV-DEALLOC-AFTER-SYNCPT VALUE 136. 88 CM-INCLUDE-PARTNER-REJECT-BO VALUE 137. * * 01 DATA-RECEIVED PIC 9(9) COMP-4. 88 CM-NO-DATA-RECEIVED VALUE 0. 88 CM-DATA-RECEIVED VALUE 1. 88 CM-COMPLETE-DATA-RECEIVED VALUE 2. 88 CM-INCOMPLETE-DATA-RECEIVED VALUE 3. * 01 DEALLOCATE-TYPE PIC 9(9) COMP-4. 88 CM-DEALLOCATE-SYNC-LEVEL VALUE 0. 88 CM-DEALLOCATE-FLUSH VALUE 1. 88 CM-DEALLOCATE-CONFIRM VALUE 2. 88 CM-DEALLOCATE-ABEND VALUE 3. * 01 DIRECTORY-ENCODING PIC 9(9) COMP-4. 88 CM-DEFAULT-ENCODING VALUE 0. 88 CM-UNICODE-ENCODING VALUE 1. * 01 DIRECTORY-SYNTAX PIC 9(9) COMP-4. 88 CM-DEFAULT-SYNTAX VALUE 0. 88 CM-DCE-SYNTAX VALUE 1. 88 CM-XDS-SYNTAX VALUE 2. 88 CM-NDS-SYNTAX VALUE 3. * 01 ERROR-DIRECTION PIC 9(9) COMP-4. 88 CM-RECEIVE-ERROR VALUE 0. 88 CM-SEND-ERROR VALUE 1. * * EXPEDITED-RECEIVE-TYPE USES RECEIVE-TYPE VALUES * 01 FILL PIC 9(9) COMP-4. 88 CM-FILL-LL VALUE 0. 88 CM-FILL-BUFFER VALUE 1. * 01 INITIALIZATION-DATA PIC X(10000). * 0-10000 BYTES * 01 INITIALIZATION-DATA-LENGTH PIC 9(9) COMP-4. * 01 LOG-DATA PIC X(512). * 0-512 BYTES * 01 LOG-DATA-LENGTH PIC 9(9) COMP-4. * 01 MAXIMUM-BUFFER-SIZE PIC 9(9) COMP-4. * 01 MODE-NAME PIC X(8). * 0-8 BYTES * 01 MODE-NAME-LENGTH PIC 9(9) COMP-4. * 01 OOID PIC 9(9) COMP-4. * 01 PARTNER-ID PIC X(1024). * 32767 BYTES IS MAX SIZE * 01 PARTNER-ID-LENGTH PIC 9(9) COMP-4. * 01 PARTNER-ID-SCOPE PIC 9(9) COMP-4. 88 CM-EXPLICIT VALUE 0. 88 CM-REFERENCE VALUE 1. * 01 PARTNER-ID-TYPE PIC 9(9) COMP-4. 88 CM-DISTINGUISHED-NAME VALUE 0. 88 CM-LOCAL-DISTINGUISHED-NAME VALUE 1. 88 CM-PROGRAM-FUNCTION-ID VALUE 2. 88 CM-OSI-TPSU-TITLE-OID VALUE 3. 88 CM-PROGRAM-BINDING VALUE 4. * 01 PARTNER-LU-NAME PIC X(17). * 1-17 BYTES * 01 PARTNER-LU-NAME-LENGTH PIC 9(9) COMP-4. * 01 PREPARE-DATA-PERMITTED PIC 9(9) COMP-4. 88 CM-PREPARE-DATA-NOT-PERMITTED VALUE 0. 88 CM-PREPARE-DATA-PERMITTED VALUE 1. * 01 PREPARE-TO-RECEIVE-TYPE PIC 9(9) COMP-4. 88 CM-PREP-TO-RECEIVE-SYNC-LEVEL VALUE 0. 88 CM-PREP-TO-RECEIVE-FLUSH VALUE 1. 88 CM-PREP-TO-RECEIVE-CONFIRM VALUE 2. * 01 PROCESSING-MODE PIC 9(9) COMP-4. 88 CM-BLOCKING VALUE 0. 88 CM-NON-BLOCKING VALUE 1. * * QUEUE-PROCESSING-MODE USES PROCESSING-MODE VALUES * 01 RECEIVED-LENGTH PIC 9(9) COMP-4. * 01 RECEIVE-TYPE PIC 9(9) COMP-4. 88 CM-RECEIVE-AND-WAIT VALUE 0. 88 CM-RECEIVE-IMMEDIATE VALUE 1. * 01 REQUESTED-LENGTH PIC 9(9) COMP-4. * 01 REQUEST-TO-SEND-RECEIVED PIC 9(9) COMP-4. 88 CM-REQ-TO-SEND-NOT-RECEIVED VALUE 0. 88 CM-NO-CONTROL-INFO-RECEIVED VALUE 0. 88 CM-REQ-TO-SEND-RECEIVED VALUE 1. 88 CM-ALLOCATE-CONFIRMED VALUE 2. 88 CM-ALLOCATE-CONFIRMED-DATA VALUE 3. 88 CM-ALLOCATE-REJECTED-WITH-DATA VALUE 4. 88 CM-EXPEDITED-DATA-AVAILABLE VALUE 5. 88 CM-RTS-RCVD-AND-EXP-DATA-AVAIL VALUE 6. * * 01 RETURN-CONTROL PIC 9(9) COMP-4. 88 CM-WHEN-SESSION-ALLOCATED VALUE 0. 88 CM-IMMEDIATE VALUE 1. * 01 SECURITY-PASSWORD PIC X(10). * 0-10 BYTES * 01 SECURITY-PASSWORD-LENGTH PIC 9(9) COMP-4. * 01 SECURITY-USER-ID PIC X(10). * 0-10 BYTES * 01 SECURITY-USER-ID-LENGTH PIC 9(9) COMP-4. * 01 SEND-LENGTH PIC 9(9) COMP-4. * 01 SEND-RECEIVE-MODE PIC 9(9) COMP-4. 88 CM-HALF-DUPLEX VALUE 0. 88 CM-FULL-DUPLEX VALUE 1. * 01 SEND-TYPE PIC 9(9) COMP-4. 88 CM-BUFFER-DATA VALUE 0. 88 CM-SEND-AND-FLUSH VALUE 1. 88 CM-SEND-AND-CONFIRM VALUE 2. 88 CM-SEND-AND-PREP-TO-RECEIVE VALUE 3. 88 CM-SEND-AND-DEALLOCATE VALUE 4. * 01 STATUS-RECEIVED PIC 9(9) COMP-4. 88 CM-NO-STATUS-RECEIVED VALUE 0. 88 CM-SEND-RECEIVED VALUE 1. 88 CM-CONFIRM-RECEIVED VALUE 2. 88 CM-CONFIRM-SEND-RECEIVED VALUE 3. 88 CM-CONFIRM-DEALLOC-RECEIVED VALUE 4. 88 CM-TAKE-COMMIT VALUE 5. 88 CM-TAKE-COMMIT-SEND VALUE 6. 88 CM-TAKE-COMMIT-DEALLOCATE VALUE 7. 88 CM-TAKE-COMMIT-DATA-OK VALUE 8. 88 CM-TAKE-COMMIT-SEND-DATA-OK VALUE 9. 88 CM-TAKE-COMMIT-DEALLOC-DATA-OK VALUE 10. 88 CM-PREPARE-OK VALUE 11. 88 CM-JOIN-TRANSACTION VALUE 12. * 01 SYNC-LEVEL PIC 9(9) COMP-4. 88 CM-NONE VALUE 0. 88 CM-CONFIRM VALUE 1. 88 CM-SYNC-POINT VALUE 2. 88 CM-SYNC-POINT-NO-CONFIRM VALUE 3. * 01 SYM-DEST-NAME PIC X(8). * 01 TIMEOUT PIC 9(9) COMP-4. * 01 TP-NAME PIC X(64). * 1-64 BYTES * 01 TP-NAME-LENGTH PIC 9(9) COMP-4. * 01 TRANSACTION-CONTROL PIC 9(9) COMP-4. 88 CM-CHAINED-TRANSACTIONS VALUE 0. 88 CM-UNCHAINED-TRANSACTIONS VALUE 1. * 01 USER-FIELD PIC X(8). * * ***************** END OF PSEUDONYMS ***************** --------------------------------- FORTRAN Pseudonym File (CMFORTRN) C * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * C * * C * CPI COMMUNICATIONS PSEUDONYMS -- SC31-6180-01 * C * * C * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * C C *** CPI COMMUNICATIONS VARIABLE NAMES *********** C * SHORT AND LONG VARIABLE NAMES ARE INCLUDED C * IN THIS FILE. SHORT NAMES ARE PROVIDED FOR C * MIGRATION PURPOSES. C ************************************************* C C *** AE_QUALIFIER_FORMAT, AP_TITLE_FORMAT ******** C INTEGER CM_DN /0/ INTEGER CM_OID /1/ INTEGER CM_INT_DIGITS /2/ C INTEGER DN /0/ INTEGER OID /1/ INTEGER INTDIG /2/ C C *** ALLOCATE_CONFIRM **************************** C INTEGER CM_ALLOCATE_NO_CONFIRM /0/ INTEGER CM_ALLOCATE_CONFIRM /1/ C INTEGER ANCNF /0/ INTEGER ACNF /1/ C C *** BEGIN_TRANSACTION *************************** C INTEGER CM_BEGIN_IMPLICIT /0/ INTEGER CM_BEGIN_EXPLICIT /1/ C INTEGER BGNIMP /0/ INTEGER BGNEXP /1/ C C *** CALL_ID ************************************* C INTEGER CM_CMACCI /1/ INTEGER CM_CMACCP /2/ INTEGER CM_CMALLC /3/ INTEGER CM_CMCANC /4/ INTEGER CM_CMCFM /5/ INTEGER CM_CMCFMD /6/ INTEGER CM_CMCNVI /7/ INTEGER CM_CMCNVO /8/ INTEGER CM_CMDEAL /9/ INTEGER CM_CMDFDE /10/ INTEGER CM_CMEACN /11/ INTEGER CM_CMEAEQ /12/ INTEGER CM_CMEAPT /13/ INTEGER CM_CMECS /14/ INTEGER CM_CMECT /15/ INTEGER CM_CMECTX /16/ INTEGER CM_CMEID /17/ INTEGER CM_CMEMBS /18/ INTEGER CM_CMEMN /19/ INTEGER CM_CMEPID /20/ INTEGER CM_CMEPLN /21/ INTEGER CM_CMESI /22/ INTEGER CM_CMESL /23/ INTEGER CM_CMESRM /24/ INTEGER CM_CMESUI /25/ INTEGER CM_CMETC /26/ INTEGER CM_CMETPN /27/ INTEGER CM_CMFLUS /28/ INTEGER CM_CMINCL /29/ INTEGER CM_CMINIC /30/ INTEGER CM_CMINIT /31/ INTEGER CM_CMPREP /32/ INTEGER CM_CMPTR /33/ INTEGER CM_CMRCV /34/ INTEGER CM_CMRCVX /35/ INTEGER CM_CMRLTP /36/ INTEGER CM_CMRTS /37/ INTEGER CM_CMSAC /38/ INTEGER CM_CMSACN /39/ INTEGER CM_CMSAEQ /40/ INTEGER CM_CMSAPT /41/ INTEGER CM_CMSBT /42/ INTEGER CM_CMSCSP /43/ INTEGER CM_CMSCST /44/ INTEGER CM_CMSCSU /45/ INTEGER CM_CMSCT /46/ INTEGER CM_CMSCU /47/ INTEGER CM_CMSDT /48/ INTEGER CM_CMSED /49/ INTEGER CM_CMSEND /50/ INTEGER CM_CMSERR /51/ INTEGER CM_CMSF /52/ INTEGER CM_CMSID /53/ INTEGER CM_CMSLD /54/ INTEGER CM_CMSLTP /55/ INTEGER CM_CMSMN /56/ INTEGER CM_CMSNDX /57/ INTEGER CM_CMSPDP /58/ INTEGER CM_CMSPID /59/ INTEGER CM_CMSPLN /60/ INTEGER CM_CMSPM /61/ INTEGER CM_CMSPTR /62/ INTEGER CM_CMSQCF /63/ INTEGER CM_CMSQPM /64/ INTEGER CM_CMSRC /65/ INTEGER CM_CMSRT /66/ INTEGER CM_CMSSL /67/ INTEGER CM_CMSSRM /68/ INTEGER CM_CMSST /69/ INTEGER CM_CMSTC /70/ INTEGER CM_CMSTPN /71/ INTEGER CM_CMTRTS /72/ INTEGER CM_CMWAIT /73/ INTEGER CM_CMWCMP /74/ C INTEGER ACCI /1/ INTEGER ACCP /2/ INTEGER ALLC /3/ INTEGER CANC /4/ INTEGER CFM /5/ INTEGER CFMD /6/ INTEGER CNVI /7/ INTEGER CNVO /8/ INTEGER DEAL /9/ INTEGER DFDE /10/ INTEGER EACN /11/ INTEGER EAEQ /12/ INTEGER EAPT /13/ INTEGER ECS /14/ INTEGER ECT /15/ INTEGER ECTX /16/ INTEGER EID /17/ INTEGER EMBS /18/ INTEGER EMN /19/ INTEGER EPID /20/ INTEGER EPLN /21/ INTEGER ESI /22/ INTEGER ESL /23/ INTEGER ESRM /24/ INTEGER ESUI /25/ INTEGER ETC /26/ INTEGER ETPN /27/ INTEGER FLUS /28/ INTEGER INCL /29/ INTEGER INIC /30/ INTEGER INIT /31/ INTEGER PREP /32/ INTEGER PTR /33/ INTEGER RCV /34/ INTEGER RCVX /35/ INTEGER RLTP /36/ INTEGER RTS /37/ INTEGER SAC /38/ INTEGER SACN /39/ INTEGER SAEQ /40/ INTEGER SAPT /41/ INTEGER SBT /42/ INTEGER SCSP /43/ INTEGER SCST /44/ INTEGER SCSU /45/ INTEGER SCT /46/ INTEGER SCU /47/ INTEGER SDT /48/ INTEGER SED /49/ INTEGER SEND /50/ INTEGER SERR /51/ INTEGER SF /52/ INTEGER SID /53/ INTEGER SLD /54/ INTEGER SLTP /55/ INTEGER SMN /56/ INTEGER SNDX /57/ INTEGER SPDP /58/ INTEGER SPID /59/ INTEGER SPLN /60/ INTEGER SPM /61/ INTEGER SPTR /62/ INTEGER SQCF /63/ INTEGER SQPM /64/ INTEGER SRC /65/ INTEGER SRT /66/ INTEGER SSL /67/ INTEGER SSRM /68/ INTEGER SST /69/ INTEGER STC /70/ INTEGER STPN /71/ INTEGER TRTS /72/ INTEGER WAIT /73/ INTEGER WCMP /74/ C C *** CONFIRMATION_URGENCY ************************ C INTEGER CM_CONFIRMATION_NOT_URGENT /0/ INTEGER CM_CONFIRMATION_URGENT /1/ C INTEGER CNURG /0/ INTEGER CURG /1/ C C *** CONTROL_INFORMATION_RECEIVED **************** C * SEE REQUEST_TO_SEND_RECEIVED VALUES C C *** CONVERSATION_QUEUE ************************** C INTEGER CM_INITIALIZATION_QUEUE /0/ INTEGER CM_SEND_QUEUE /1/ INTEGER CM_RECEIVE_QUEUE /2/ INTEGER CM_SEND_RECEIVE_QUEUE /3/ INTEGER CM_EXPEDITED_SEND_QUEUE /4/ INTEGER CM_EXPEDITED_RECEIVE_QUEUE /5/ C INTEGER INITQ /0/ INTEGER SENDQ /1/ INTEGER RCVQ /2/ INTEGER SNRCVQ /3/ INTEGER XSENDQ /4/ INTEGER XRCVQ /5/ C C *** CONVERSATION_STATE ************************** C INTEGER CM_INITIALIZE_STATE /2/ INTEGER CM_SEND_STATE /3/ INTEGER CM_RECEIVE_STATE /4/ INTEGER CM_SEND_PENDING_STATE /5/ INTEGER CM_CONFIRM_STATE /6/ INTEGER CM_CONFIRM_SEND_STATE /7/ INTEGER CM_CONFIRM_DEALLOCATE_STATE /8/ INTEGER CM_DEFER_RECEIVE_STATE /9/ INTEGER CM_DEFER_DEALLOCATE_STATE /10/ INTEGER CM_SYNC_POINT_STATE /11/ INTEGER CM_SYNC_POINT_SEND_STATE /12/ INTEGER CM_SYNC_POINT_DEALLOCATE_STATE /13/ INTEGER CM_INITIALIZE_INCOMING_STATE /14/ INTEGER CM_SEND_ONLY_STATE /15/ INTEGER CM_RECEIVE_ONLY_STATE /16/ INTEGER CM_SEND_RECEIVE_STATE /17/ INTEGER CM_PREPARED_STATE /18/ C INTEGER INITST /2/ INTEGER SENDST /3/ INTEGER RCVST /4/ INTEGER SPNDST /5/ INTEGER CFMST /6/ INTEGER CSNDST /7/ INTEGER CDEAST /8/ INTEGER DRCVST /9/ INTEGER DDEAST /10/ INTEGER SPST /11/ INTEGER SPSST /12/ INTEGER SPDST /13/ INTEGER INCOME /14/ INTEGER SNDOST /15/ INTEGER RCVOST /16/ INTEGER SNRCST /17/ INTEGER PREPED /18/ C C *** CONVERSATION_TYPE *************************** C INTEGER CM_BASIC_CONVERSATION /0/ INTEGER CM_MAPPED_CONVERSATION /1/ INTEGER BASIC /0/ INTEGER MAPPED /1/ C C *** CONVERSATION_SECURITY_TYPE ****************** C INTEGER CM_SECURITY_NONE /0/ INTEGER CM_SECURITY_SAME /1/ INTEGER CM_SECURITY_PROGRAM /2/ INTEGER CM_SECURITY_DISTRIBUTED /3/ INTEGER CM_SECURITY_MUTUAL /4/ INTEGER CM_SECURITY_PROGRAM_STRONG /5/ C INTEGER NONE /0/ INTEGER SAME /1/ INTEGER PROGRAM /2/ INTEGER DISTRB /3/ INTEGER MUTUAL /4/ INTEGER PROGST /5/ C C *** DATA_RECEIVED ******************************* C INTEGER CM_NO_DATA_RECEIVED /0/ INTEGER CM_DATA_RECEIVED /1/ INTEGER CM_COMPLETE_DATA_RECEIVED /2/ INTEGER CM_INCOMPLETE_DATA_RECEIVED /3/ C INTEGER NODATA /0/ INTEGER DATREC /1/ INTEGER COMDAT /2/ INTEGER INCDAT /3/ C C *** DEALLOCATE_TYPE ***************************** C INTEGER CM_DEALLOCATE_SYNC_LEVEL /0/ INTEGER CM_DEALLOCATE_FLUSH /1/ INTEGER CM_DEALLOCATE_CONFIRM /2/ INTEGER CM_DEALLOCATE_ABEND /3/ C INTEGER DESYNC /0/ INTEGER DEFLUS /1/ INTEGER DECONF /2/ INTEGER DEABTY /3/ C C *** DIRECTORY_ENCODING ************************** C INTEGER CM_DEFAULT_ENCODING /0/ INTEGER CM_UNICODE_ENCODING /1/ C INTEGER DENCOD /0/ INTEGER UENCOD /1/ C C *** DIRECTORY_SYNTAX ************************** C INTEGER CM_DEFAULT_SYNTAX /0/ INTEGER CM_DCE_SYNTAX /1/ INTEGER CM_XDS_SYNTAX /2/ INTEGER CM_NDS_SYNTAX /3/ C INTEGER DEFSYN /0/ INTEGER DCESYN /1/ INTEGER XDSSYN /2/ INTEGER NDSSYN /3/ C C *** ERROR_DIRECTION ***************************** C INTEGER CM_RECEIVE_ERROR /0/ INTEGER CM_SEND_ERROR /1/ C INTEGER RCVERR /0/ INTEGER SNDERR /1/ C C *** FILL **************************************** C INTEGER CM_FILL_LL /0/ INTEGER CM_FILL_BUFFER /1/ C INTEGER FIL_LL /0/ INTEGER FILBUF /1/ C C *** PARTNER_ID_SCOPE **************************** C INTEGER CM_EXPLICIT /0/ INTEGER CM_REFERENCE /1/ C INTEGER XPLCIT /0/ INTEGER RFRNCE /1/ C C *** PARTNER_ID_TYPE **************************** C INTEGER CM_DISTINGUISHED_NAME /0/ INTEGER CM_LOCAL_DISTINGUISHED_NAME /1/ INTEGER CM_PROGRAM_FUNCTION_ID /2/ INTEGER CM_OSI_TPSU_TITLE_OID /3/ INTEGER CM_PROGRAM_BINDING /4/ C INTEGER DSTNAM /0/ INTEGER LDSTNM /1/ INTEGER PFID /2/ INTEGER TPSUTI /3/ INTEGER PRGBND /4/ C C *** PREPARE_DATA_PERMITTED ********************** C INTEGER CM_PREPARE_DATA_NOT_PERMITTED /0/ INTEGER CM_PREPARE_DATA_PERMITTED /1/ C INTEGER PDNP /0/ INTEGER PDP /1/ C C *** PREPARE_TO_RECEIVE_TYPE ********************* C INTEGER CM_PREP_TO_RECEIVE_SYNC_LEVEL /0/ INTEGER CM_PREP_TO_RECEIVE_FLUSH /1/ INTEGER CM_PREP_TO_RECEIVE_CONFIRM /2/ C INTEGER PTR_SL /0/ INTEGER PTRFLS /1/ INTEGER PTRCON /2/ C *** PROCESSING_MODE, QUEUE_PROCESSING_MODE ****** C INTEGER CM_BLOCKING /0/ INTEGER CM_NON_BLOCKING /1/ C INTEGER BLOCK /0/ INTEGER NONBLK /1/ C C *** RECEIVE_TYPE, EXPEDITED_RECEIVE_TYPE ******** C INTEGER CM_RECEIVE_AND_WAIT /0/ INTEGER CM_RECEIVE_IMMEDIATE /1/ C INTEGER RCVWAT /0/ INTEGER RCVIMM /1/ C C *** REQUEST_TO_SEND_RECEIVED ******************** C INTEGER CM_REQ_TO_SEND_NOT_RECEIVED /0/ INTEGER CM_NO_CONTROL_INFO_RECEIVED /0/ INTEGER CM_REQ_TO_SEND_RECEIVED /1/ INTEGER CM_ALLOCATE_CONFIRMED /2/ INTEGER CM_ALLOCATE_CONFIRMED_WITH_DATA /3/ INTEGER CM_ALLOCATE_REJECTED_WITH_DATA /4/ INTEGER CM_EXPEDITED_DATA_AVAILABLE /5/ INTEGER CM_RTS_RCVD_AND_EXP_DATA_AVAIL /6/ C INTEGER RTSNOT /0/ INTEGER NOCDAT /0/ INTEGER RTSREC /1/ INTEGER RTSAC /2/ INTEGER RTSACD /3/ INTEGER RTSARD /4/ INTEGER EXPDAV /5/ INTEGER RTSEXP /6/ C C *** RETURN_CODE, CONVERSATION_RETURN_CODE ******* C INTEGER CM_OK /0/ INTEGER CM_ALLOCATE_FAILURE_NO_RETRY /1/ INTEGER CM_ALLOCATE_FAILURE_RETRY /2/ INTEGER CM_CONVERSATION_TYPE_MISMATCH /3/ INTEGER CM_PIP_NOT_SPECIFIED_CORRECTLY /5/ INTEGER CM_SECURITY_NOT_VALID /6/ INTEGER CM_SYNC_LVL_NOT_SUPPORTED_LU /7/ INTEGER CM_SYNC_LVL_NOT_SUPPORTED_SYS /7/ INTEGER CM_SYNC_LVL_NOT_SUPPORTED_PGM /8/ INTEGER CM_TPN_NOT_RECOGNIZED /9/ INTEGER CM_TP_NOT_AVAILABLE_NO_RETRY /10/ INTEGER CM_TP_NOT_AVAILABLE_RETRY /11/ INTEGER CM_DEALLOCATED_ABEND /17/ INTEGER CM_DEALLOCATED_NORMAL /18/ INTEGER CM_PARAMETER_ERROR /19/ INTEGER CM_PRODUCT_SPECIFIC_ERROR /20/ INTEGER CM_PROGRAM_ERROR_NO_TRUNC /21/ INTEGER CM_PROGRAM_ERROR_PURGING /22/ INTEGER CM_PROGRAM_ERROR_TRUNC /23/ INTEGER CM_PROGRAM_PARAMETER_CHECK /24/ INTEGER CM_PROGRAM_STATE_CHECK /25/ INTEGER CM_RESOURCE_FAILURE_NO_RETRY /26/ INTEGER CM_RESOURCE_FAILURE_RETRY /27/ INTEGER CM_UNSUCCESSFUL /28/ INTEGER CM_DEALLOCATED_ABEND_SVC /30/ INTEGER CM_DEALLOCATED_ABEND_TIMER /31/ INTEGER CM_SVC_ERROR_NO_TRUNC /32/ INTEGER CM_SVC_ERROR_PURGING /33/ INTEGER CM_SVC_ERROR_TRUNC /34/ INTEGER CM_OPERATION_INCOMPLETE /35/ INTEGER CM_SYSTEM_EVENT /36/ INTEGER CM_OPERATION_NOT_ACCEPTED /37/ INTEGER CM_CONVERSATION_ENDING /38/ INTEGER CM_SEND_RCV_MODE_NOT_SUPPORTED /39/ INTEGER CM_BUFFER_TOO_SMALL /40/ INTEGER CM_EXP_DATA_NOT_SUPPORTED /41/ INTEGER CM_DEALLOC_CONFIRM_REJECT /42/ INTEGER CM_ALLOCATION_ERROR /43/ INTEGER CM_RETRY_LIMIT_EXCEEDED /44/ INTEGER CM_NO_SECONDARY_INFORMATION /45/ INTEGER CM_SECURITY_NOT_SUPPORTED /46/ INTEGER CM_SECURITY_MUTUAL_FAILED /47/ INTEGER CM_CALL_NOT_SUPPORTED /48/ INTEGER CM_PARM_VALUE_NOT_SUPPORTED /49/ INTEGER CM_TAKE_BACKOUT /100/ INTEGER CM_DEALLOCATED_ABEND_BO /130/ INTEGER CM_DEALLOCATED_ABEND_SVC_BO /131/ INTEGER CM_DEALLOCATED_ABEND_TIMER_BO /132/ INTEGER CM_RESOURCE_FAIL_NO_RETRY_BO /133/ INTEGER CM_RESOURCE_FAILURE_RETRY_BO /134/ INTEGER CM_DEALLOCATED_NORMAL_BO /135/ INTEGER CM_CONV_DEALLOC_AFTER_SYNCPT /136/ INTEGER CM_INCLUDE_PARTNER_REJECT_BO /137/ C INTEGER ALFLNR /1/ INTEGER ALFLRE /2/ INTEGER CNVMIS /3/ INTEGER PNSC /5/ INTEGER SECNVL /6/ INTEGER SL_NSL /7/ INTEGER SL_NSS /7/ INTEGER SL_NS /8/ INTEGER TPNAME /9/ INTEGER TPNORE /10/ INTEGER TPRET /11/ INTEGER DEABND /17/ INTEGER DENORM /18/ INTEGER PARERR /19/ INTEGER PRODER /20/ INTEGER PENOTR /21/ INTEGER PEPURG /22/ INTEGER PETRNC /23/ INTEGER PEPCHK /24/ INTEGER STACHK /25/ INTEGER RFNORE /26/ INTEGER RFRET /27/ INTEGER UNSUCC /28/ INTEGER DABSVC /30/ INTEGER DABTIM /31/ INTEGER SVCENT /32/ INTEGER SVCEP /33/ INTEGER SVCET /34/ INTEGER OPINC /35/ INTEGER SYSEVT /36/ INTEGER OPNACC /37/ INTEGER CONVEN /38/ INTEGER SRM_NS /39/ INTEGER SMLBUF /40/ INTEGER EXD_NS /41/ INTEGER DECORJ /42/ INTEGER ALLERR /43/ INTEGER RETLIM /44/ INTEGER NSINFO /45/ INTEGER SECNSP /46/ INTEGER SECMFL /47/ INTEGER CALLNS /48/ INTEGER PARMNS /49/ INTEGER TAKEBO /100/ INTEGER DABBO /130/ INTEGER DABSBO /131/ INTEGER DABTBO /132/ INTEGER RFNRBO /133/ INTEGER RFRBO /134/ INTEGER DNORBO /135/ INTEGER CDASP /136/ INTEGER INPRBO /137/ C C *** RETURN_CONTROL ****************************** C INTEGER CM_WHEN_SESSION_ALLOCATED /0/ INTEGER CM_IMMEDIATE /1/ C INTEGER SESALL /0/ INTEGER IMMED /1/ C C *** SEND_RECEIVE_MODE *************************** C INTEGER CM_HALF_DUPLEX /0/ INTEGER CM_FULL_DUPLEX /1/ C INTEGER HDX /0/ INTEGER FDX /1/ C C *** SEND_TYPE *********************************** C INTEGER CM_BUFFER_DATA /0/ INTEGER CM_SEND_AND_FLUSH /1/ INTEGER CM_SEND_AND_CONFIRM /2/ INTEGER CM_SEND_AND_PREP_TO_RECEIVE /3/ INTEGER CM_SEND_AND_DEALLOCATE /4/ C INTEGER BUFDAT /0/ INTEGER SNDFLS /1/ INTEGER SNDCNF /2/ INTEGER SNDPTR /3/ INTEGER SNDDEL /4/ C C *** STATUS_RECEIVED ***************************** C INTEGER CM_NO_STATUS_RECEIVED /0/ INTEGER CM_SEND_RECEIVED /1/ INTEGER CM_CONFIRM_RECEIVED /2/ INTEGER CM_CONFIRM_SEND_RECEIVED /3/ INTEGER CM_CONFIRM_DEALLOC_RECEIVED /4/ INTEGER CM_TAKE_COMMIT /5/ INTEGER CM_TAKE_COMMIT_SEND /6/ INTEGER CM_TAKE_COMMIT_DEALLOCATE /7/ INTEGER CM_TAKE_COMMIT_DATA_OK /8/ INTEGER CM_TAKE_COMMIT_SEND_DATA_OK /9/ INTEGER CM_TAKE_COMMIT_DEALLOC_DATA_OK /10/ INTEGER CM_PREPARE_OK /11/ INTEGER CM_JOIN_TRANSACTION /12/ C INTEGER NOSTAT /0/ INTEGER SNDREC /1/ INTEGER CONRCV /2/ INTEGER CONSND /3/ INTEGER CONDEL /4/ INTEGER TAKEC /5/ INTEGER TAKECS /6/ INTEGER TAKECD /7/ INTEGER TAKDO /8/ INTEGER TAKDSO /9/ INTEGER TAKDDO /10/ INTEGER PREPOK /11/ INTEGER JOINTR /12/ C C *** SYNC_LEVEL ********************************** C INTEGER CM_NONE /0/ INTEGER CM_CONFIRM /1/ INTEGER CM_SYNC_POINT /2/ INTEGER CM_SYNC_POINT_NO_CONFIRM /3/ C INTEGER NONE /0/ INTEGER CONFRM /1/ INTEGER SYNCPT /2/ INTEGER SYNCNC /3/ C C *** TRANSACTION_CONTROL ************************* C INTEGER CM_CHAINED_TRANSACTIONS /0/ INTEGER CM_UNCHAINED_TRANSACTIONS /1/ C INTEGER CHAIN /0/ INTEGER UCHAIN /1/ C C *** CPI COMMUNICATIONS ROUTINE PROTOTYPES ******* C * FOLLOWING ARE PROTOTYPES FOR ALL THE CPI C * COMMUNICATIONS ROUTINES. C ************************************************* C EXTERNAL CMACCI EXTERNAL CMACCP EXTERNAL CMALLC EXTERNAL CMCANC EXTERNAL CMCFM EXTERNAL CMCFMD EXTERNAL CMCNVI EXTERNAL CMCNVO EXTERNAL CMDEAL EXTERNAL CMDEDE EXTERNAL CMEAEQ EXTERNAL CMEAPT EXTERNAL CMEACN EXTERNAL CMECS EXTERNAL CMECT EXTERNAL CMECTX EXTERNAL CMEID EXTERNAL CMEMBS EXTERNAL CMEMN EXTERNAL CMEPLN EXTERNAL CMEPID EXTERNAL CMESI EXTERNAL CMESL EXTERNAL CMESRM EXTERNAL CMESUI EXTERNAL CMETC EXTERNAL CMETP EXTERNAL CMFLUS EXTERNAL CMINCL EXTERNAL CMINIC EXTERNAL CMINIT EXTERNAL CMPREP EXTERNAL CMPTR EXTERNAL CMRCV EXTERNAL CMRCVX EXTERNAL CMRLTP EXTERNAL CMRTS EXTERNAL CMSAEQ EXTERNAL CMSAC EXTERNAL CMSAPT EXTERNAL CMSACN EXTERNAL CMSBT EXTERNAL CMSCSP EXTERNAL CMSCST EXTERNAL CMSCSU EXTERNAL CMSCT EXTERNAL CMSCU EXTERNAL CMSDT EXTERNAL CMSED EXTERNAL CMSEND EXTERNAL CMSERR EXTERNAL CMSF EXTERNAL CMSID EXTERNAL CMSLD EXTERNAL CMSLTP EXTERNAL CMSMN EXTERNAL CMSNDX EXTERNAL CMSPDP EXTERNAL CMSPID EXTERNAL CMSPLN EXTERNAL CMSPM EXTERNAL CMSPTR EXTERNAL CMSQPM EXTERNAL CMSRC EXTERNAL CMSRT EXTERNAL CMSSL EXTERNAL CMSSRM EXTERNAL CMSST EXTERNAL CMSTC EXTERNAL CMSTPN EXTERNAL CMTRTS EXTERNAL CMWAIT EXTERNAL CMWCMP C C ********************* END OF PSEUDONYMS ******************* --------------------------- PL/I Pseudonym File (CMPLI) /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ /* */ /* CPI Communications Pseudonyms -- SC31-6180-01 */ /* */ /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ %skip(3); /******************************************************************/ /* AE Qualifier Format, AP Title Format Values */ /******************************************************************/ DECLARE ( cm_dn INITIAL(0), cm_oid INITIAL(1), cm_int_digits INITIAL(2)) FIXED BINARY(31) STATIC; %skip; /******************************************************************/ /* Allocate Confirm Values */ /******************************************************************/ DECLARE ( cm_allocate_no_confirm INITIAL(0), cm_allocate_confirm INITIAL(1)) FIXED BINARY(31) STATIC; %skip; /******************************************************************/ /* Begin Transaction Values */ /******************************************************************/ DECLARE ( cm_begin_implicit INITIAL(0), cm_begin_explicit INITIAL(1)) FIXED BINARY(31) STATIC; %skip; /******************************************************************/ /* Call ID Values */ /******************************************************************/ DECLARE ( cm_cmacci INITIAL(1), cm_cmaccp INITIAL(2), cm_cmallc INITIAL(3), cm_cmcanc INITIAL(4), cm_cmcfm INITIAL(5), cm_cmcfmd INITIAL(6), cm_cmcnvi INITIAL(7), cm_cmcnvo INITIAL(8), cm_cmdeal INITIAL(9), cm_cmdfde INITIAL(10), cm_cmeacn INITIAL(11), cm_cmeaeq INITIAL(12), cm_cmeapt INITIAL(13), cm_cmecs INITIAL(14), cm_cmect INITIAL(15), cm_cmectx INITIAL(16), cm_cmeid INITIAL(17), cm_cmembs INITIAL(18), cm_cmemn INITIAL(19), cm_cmepid INITIAL(20), cm_cmepln INITIAL(21), cm_cmesi INITIAL(22), cm_cmesl INITIAL(23), cm_cmesrm INITIAL(24), cm_cmesui INITIAL(25), cm_cmetc INITIAL(26), cm_cmetpn INITIAL(27), cm_cmflus INITIAL(28), cm_cmincl INITIAL(29), cm_cminic INITIAL(30), cm_cminit INITIAL(31), cm_cmprep INITIAL(32), cm_cmptr INITIAL(33), cm_cmrcv INITIAL(34), cm_cmrcvx INITIAL(35), cm_cmrltp INITIAL(36), cm_cmrts INITIAL(37), cm_cmsac INITIAL(38), cm_cmsacn INITIAL(39), cm_cmsaeq INITIAL(40), cm_cmsapt INITIAL(41), cm_cmsbt INITIAL(42), cm_cmscsp INITIAL(43), cm_cmscst INITIAL(44), cm_cmscsu INITIAL(45), cm_cmsct INITIAL(46), cm_cmscu INITIAL(47), cm_cmsdt INITIAL(48), cm_cmsed INITIAL(49), cm_cmsend INITIAL(50), cm_cmserr INITIAL(51), cm_cmsf INITIAL(52), cm_cmsid INITIAL(53), cm_cmsld INITIAL(54), cm_cmsltp INITIAL(55), cm_cmsmn INITIAL(56), cm_cmsndx INITIAL(57), cm_cmspdp INITIAL(58), cm_cmspid INITIAL(59), cm_cmspln INITIAL(60), cm_cmspm INITIAL(61), cm_cmsptr INITIAL(62), cm_cmsqcf INITIAL(63), cm_cmsqpm INITIAL(64), cm_cmsrc INITIAL(65), cm_cmsrt INITIAL(66), cm_cmssl INITIAL(67), cm_cmssrm INITIAL(68), cm_cmsst INITIAL(69), cm_cmstc INITIAL(70), cm_cmstpn INITIAL(71), cm_cmtrts INITIAL(72), cm_cmwait INITIAL(73), cm_cmwcmp INITIAL(74)) FIXED BINARY(31) STATIC; %skip; /******************************************************************/ /* Confirmation Urgency Values */ /******************************************************************/ DECLARE ( cm_confirmation_not_urgent INITIAL(0), cm_confirmation_urgent INITIAL(1)) FIXED BINARY(31) STATIC; %skip; /******************************************************************/ /* Control Information Received -- see Request To Send Received */ /******************************************************************/ %skip; /******************************************************************/ /* Conversation Queue Values */ /******************************************************************/ DECLARE ( cm_initialization_queue INITIAL(0), cm_send_queue INITIAL(1), cm_receive_queue INITIAL(2), cm_send_receive_queue INITIAL(3), cm_expedited_send_queue INITIAL(4), cm_expedited_receive_queue INITIAL(5)) FIXED BINARY(31) STATIC; %skip; /******************************************************************/ /* Conversation State Values */ /******************************************************************/ DECLARE ( cm_initialize_state INITIAL(2), cm_send_state INITIAL(3), cm_receive_state INITIAL(4), cm_send_pending_state INITIAL(5), cm_confirm_state INITIAL(6), cm_confirm_send_state INITIAL(7), cm_confirm_deallocate_state INITIAL(8), cm_defer_receive_state INITIAL(9), cm_defer_deallocate_state INITIAL(10), cm_sync_point_state INITIAL(11), cm_sync_point_send_state INITIAL(12), cm_sync_point_deallocate_state INITIAL(13), cm_initialize_incoming_state INITIAL(14), cm_send_only_state INITIAL(15), cm_receive_only_state INITIAL(16), cm_send_receive_state INITIAL(17), cm_prepared_state INITIAL(18)) FIXED BINARY(31) STATIC; %skip; /******************************************************************/ /* Conversation Type Values */ /******************************************************************/ DECLARE ( cm_basic_conversation INITIAL(0), cm_mapped_conversation INITIAL(1)) FIXED BINARY(31) STATIC; %skip; /******************************************************************/ /* Conversation Security Type Values */ /******************************************************************/ DECLARE ( cm_security_none INITIAL(0), cm_security_same INITIAL(1), cm_security_program INITIAL(2), cm_security_distributed INITIAL(3), cm_security_mutual INITIAL(4), cm_security_program_strong INITIAL(5)) FIXED BINARY(31) STATIC; %skip; /******************************************************************/ /* Data Received Values */ /******************************************************************/ DECLARE ( cm_no_data_received INITIAL(0), cm_data_received INITIAL(1), cm_complete_data_received INITIAL(2), cm_incomplete_data_received INITIAL(3)) FIXED BINARY(31) STATIC; %skip; /******************************************************************/ /* Deallocate Type Values */ /******************************************************************/ DECLARE ( cm_deallocate_sync_level INITIAL(0), cm_deallocate_flush INITIAL(1), cm_deallocate_confirm INITIAL(2), cm_deallocate_abend INITIAL(3)) FIXED BINARY(31) STATIC; %skip; /******************************************************************/ /* Directory Encoding Values */ /******************************************************************/ DECLARE ( cm_default_syntax INITIAL(0), cm_dce_syntax INITIAL(1), cm_xds_syntax INITIAL(2), cm_nds_syntax INITIAL(3)) FIXED BINARY(31) STATIC; %skip; /******************************************************************/ /* Directory Encoding Values */ /******************************************************************/ DECLARE ( cm_default_encoding INITIAL(0), cm_unicode_encoding INITIAL(1)) FIXED BINARY(31) STATIC; %skip; /******************************************************************/ /* Error Direction Values */ /******************************************************************/ DECLARE ( cm_receive_error INITIAL(0), cm_send_error INITIAL(1)) FIXED BINARY(31) STATIC; %skip; /******************************************************************/ /* Fill Values */ /******************************************************************/ DECLARE ( cm_fill_ll INITIAL(0), cm_fill_buffer INITIAL(1)) FIXED BINARY(31) STATIC; %skip; /******************************************************************/ /* Partner ID Scope Values */ /******************************************************************/ DECLARE ( cm_explicit INITIAL(0), cm_reference INITIAL(1)) FIXED BINARY(31) STATIC; %skip; /******************************************************************/ /* Partner ID Type Values */ /******************************************************************/ DECLARE ( cm_distinguished_name INITIAL(0), cm_local_distinguished_name INITIAL(1), cm_program_function_id INITIAL(2), cm_osi_tpsu_title_oid INITIAL(3), cm_program_binding INITIAL(4)) FIXED BINARY(31) STATIC; %skip; /******************************************************************/ /* Prepare Data Permitted Values */ /******************************************************************/ DECLARE ( cm_prepare_data_not_permitted INITIAL(0), cm_prepare_data_permitted INITIAL(1)) FIXED BINARY(31) STATIC; %skip; /******************************************************************/ /* Prepare To Receive Type Values */ /******************************************************************/ DECLARE ( cm_prep_to_receive_sync_level INITIAL(0), cm_prep_to_receive_flush INITIAL(1), cm_prep_to_receive_confirm INITIAL(2)) FIXED BINARY(31) STATIC; %skip; /******************************************************************/ /* Processing Mode, Queue Processing Mode Values */ /******************************************************************/ DECLARE ( cm_blocking INITIAL(0), cm_non_blocking INITIAL(1)) FIXED BINARY(31) STATIC; %skip; /******************************************************************/ /* Receive Type, Expedited Receive Type Values */ /******************************************************************/ DECLARE ( cm_receive_and_wait INITIAL(0), cm_receive_immediate INITIAL(1)) FIXED BINARY(31) STATIC; %skip; /******************************************************************/ /* Return Code, Conversation Return Code Values */ /******************************************************************/ DECLARE ( cm_ok INITIAL(0), cm_allocate_failure_no_retry INITIAL(1), cm_allocate_failure_retry INITIAL(2), cm_conversation_type_mismatch INITIAL(3), cm_pip_not_specified_correctly INITIAL(5), cm_security_not_valid INITIAL(6), cm_sync_lvl_not_supported_lu INITIAL(7), cm_sync_lvl_not_supported_sys INITIAL(7), cm_sync_lvl_not_supported_pgm INITIAL(8), cm_tpn_not_recognized INITIAL(9), cm_tp_not_available_no_retry INITIAL(10), cm_tp_not_available_retry INITIAL(11), cm_deallocated_abend INITIAL(17), cm_deallocated_normal INITIAL(18), cm_parameter_error INITIAL(19), cm_product_specific_error INITIAL(20), cm_program_error_no_trunc INITIAL(21), cm_program_error_purging INITIAL(22), cm_program_error_trunc INITIAL(23), cm_program_parameter_check INITIAL(24), cm_program_state_check INITIAL(25), cm_resource_failure_no_retry INITIAL(26), cm_resource_failure_retry INITIAL(27), cm_unsuccessful INITIAL(28), cm_deallocated_abend_svc INITIAL(30), cm_deallocated_abend_timer INITIAL(31), cm_svc_error_no_trunc INITIAL(32), cm_svc_error_purging INITIAL(33), cm_svc_error_trunc INITIAL(34), cm_operation_incomplete INITIAL(35), cm_system_event INITIAL(36), cm_operation_not_accepted INITIAL(37), cm_conversation_ending INITIAL(38), cm_send_rcv_mode_not_supported INITIAL(39), cm_buffer_too_small INITIAL(40), cm_exp_data_not_supported INITIAL(41), cm_dealloc_confirm_reject INITIAL(42), cm_allocation_error INITIAL(43), cm_retry_limit_exceeded INITIAL(44), cm_no_secondary_information INITIAL(45), cm_security_not_supported INITIAL(46), cm_security_mutual_failed INITIAL(47), cm_call_not_supported INITIAL(48), cm_parm_value_not_supported INITIAL(49), cm_take_backout INITIAL(100), cm_deallocated_abend_bo INITIAL(130), cm_deallocated_abend_svc_bo INITIAL(131), cm_deallocated_abend_timer_bo INITIAL(132), cm_resource_fail_no_retry_bo INITIAL(133), cm_resource_failure_retry_bo INITIAL(134), cm_deallocated_normal_bo INITIAL(135), cm_conv_dealloc_after_syncpt INITIAL(136), cm_include_partner_reject_bo INITIAL(137)) FIXED BINARY(31) STATIC; %skip; /******************************************************************/ /* Return Control Values */ /******************************************************************/ DECLARE ( cm_when_session_allocated INITIAL(0), cm_immediate INITIAL(1)) FIXED BINARY(31) STATIC; %skip; /******************************************************************/ /* Request To Send Received, Control Information Received Values */ /******************************************************************/ DECLARE ( cm_req_to_send_not_received INITIAL(0), cm_no_control_info_received INITIAL(0), cm_req_to_send_received INITIAL(1), cm_allocate_confirmed INITIAL(2), cm_allocate_confirmed_with_data INITIAL(3), cm_allocate_rejected_with_data INITIAL(4), cm_expedited_data_available INITIAL(5), cm_rts_rcvd_and_exp_data_avail INITIAL(6)) FIXED BINARY(31) STATIC; %skip; /******************************************************************/ /* Send Type Values */ /******************************************************************/ DECLARE ( cm_buffer_data INITIAL(0), cm_send_and_flush INITIAL(1), cm_send_and_confirm INITIAL(2), cm_send_and_prep_to_receive INITIAL(3), cm_send_and_deallocate INITIAL(4)) FIXED BINARY(31) STATIC; %skip; /******************************************************************/ /* Status Received Values */ /******************************************************************/ DECLARE ( cm_no_status_received INITIAL(0), cm_send_received INITIAL(1), cm_confirm_received INITIAL(2), cm_confirm_send_received INITIAL(3), cm_confirm_dealloc_received INITIAL(4), cm_take_commit INITIAL(5), cm_take_commit_send INITIAL(6), cm_take_commit_deallocate INITIAL(7), cm_take_commit_data_ok INITIAL(8), cm_take_commit_send_data_ok INITIAL(9), cm_take_commit_dealloc_data_ok INITIAL(10), cm_prepare_ok INITIAL(11), cm_join_transaction INITIAL(12)) FIXED BINARY(31) STATIC; %skip; /******************************************************************/ /* Sync Level Values */ /******************************************************************/ DECLARE ( cm_none INITIAL(0), cm_confirm INITIAL(1), cm_sync_point INITIAL(2), cm_sync_point_no_confirm INITIAL(3)) FIXED BINARY(31) STATIC; %skip; /******************************************************************/ /* Transaction Control Values */ /******************************************************************/ DECLARE ( cm_chained_transactions INITIAL(0), cm_unchained_transactions INITIAL(1)) FIXED BINARY(31) STATIC; %skip; /******************************************************************/ /* CPI Communications Accept Incoming Call */ /******************************************************************/ DECLARE CMACCI ENTRY ( CHAR(8), /* In - Conversation ID */ FIXED BINARY(31) ) /* Out - Return Code */ EXTERNAL OPTIONS(ASM INTER); %skip; /******************************************************************/ /* CPI Communications Accept Conversation Call */ /******************************************************************/ DECLARE CMACCP ENTRY ( CHAR(8), /* Out - Conversation ID */ FIXED BINARY(31) ) /* Out - Return Code */ EXTERNAL OPTIONS(ASM INTER); %skip; /******************************************************************/ /* CPI Communications Allocate Call */ /******************************************************************/ DECLARE CMALLC ENTRY ( CHAR(8), /* In - Conversation ID */ FIXED BINARY(31) ) /* Out - Return Code */ EXTERNAL OPTIONS(ASM INTER); %skip; /******************************************************************/ /* CPI Communications Cancel Call */ /******************************************************************/ DECLARE CMCANC ENTRY ( CHAR(8), /* In - Conversation ID */ FIXED BINARY(31) ) /* Out - Return Code */ EXTERNAL OPTIONS(ASM INTER); %skip; /******************************************************************/ /* CPI Communications Confirm Call */ /******************************************************************/ DECLARE CMCFM ENTRY ( CHAR(8), /* In - Conversation ID */ FIXED BINARY(31), /* Out - Control Info Received */ FIXED BINARY(31) ) /* Out - Return Code */ EXTERNAL OPTIONS(ASM INTER); %skip; /******************************************************************/ /* CPI Communications Confirmed Call */ /******************************************************************/ DECLARE CMCFMD ENTRY ( CHAR(8), /* In - Conversation ID */ FIXED BINARY(31) ) /* Out - Return Code */ EXTERNAL OPTIONS(ASM INTER); %skip; /******************************************************************/ /* CPI Communications Convert Incoming Call */ /******************************************************************/ DECLARE CMCNVI ENTRY ( CHAR(*), /* In/Out - Buffer */ FIXED BINARY(31), /* In - Buffer Length */ FIXED BINARY(31) ) /* Out - Return Code */ EXTERNAL OPTIONS(ASM INTER); %skip; /******************************************************************/ /* CPI Communications Convert Outgoing Call */ /******************************************************************/ DECLARE CMCNVO ENTRY ( CHAR(*), /* In/Out - Buffer */ FIXED BINARY(31), /* In - Buffer Length */ FIXED BINARY(31) ) /* Out - Return Code */ EXTERNAL OPTIONS(ASM INTER); %skip; /******************************************************************/ /* CPI Communications Deallocate Call */ /******************************************************************/ DECLARE CMDEAL ENTRY ( CHAR(8), /* In - Conversation ID */ FIXED BINARY(31) ) /* Out - Return Code */ EXTERNAL OPTIONS(ASM INTER); %skip; /******************************************************************/ /* CPI Communications Deferred Deallocate Call */ /******************************************************************/ DECLARE CMDEDE ENTRY ( CHAR(8), /* In - Conversation ID */ FIXED BINARY(31) ) /* Out - Return Code */ EXTERNAL OPTIONS(ASM INTER); %skip; /******************************************************************/ /* CPI Communications Extract AE Qualifier Call */ /******************************************************************/ DECLARE CMEAEQ ENTRY ( CHAR(8), /* In - Conversation ID */ CHAR(32), /* Out - AE Qualifier */ FIXED BINARY(31), /* Out - AE Qualifier Length */ FIXED BINARY(31), /* Out - AE Qualifier Format */ FIXED BINARY(31) ) /* Out - Return Code */ EXTERNAL OPTIONS(ASM INTER); %skip; /******************************************************************/ /* CPI Communications Extract AP Title Call */ /******************************************************************/ DECLARE CMEAPT ENTRY ( CHAR(8), /* In - Conversation ID */ CHAR(32), /* Out - AP Title */ FIXED BINARY(31), /* Out - AP Title Length */ FIXED BINARY(31), /* Out - AP Title Format */ FIXED BINARY(31) ) /* Out - Return Code */ EXTERNAL OPTIONS(ASM INTER); %skip; /******************************************************************/ /* CPI Communications Extract Application Context Call */ /******************************************************************/ DECLARE CMEACN ENTRY ( CHAR(8), /* In - Conversation ID */ CHAR(32), /* Out - Application Context */ FIXED BINARY(31), /* Out - Application Context Leng*/ FIXED BINARY(31) ) /* Out - Return Code */ EXTERNAL OPTIONS(ASM INTER); %skip; /******************************************************************/ /* CPI Communications Extract Conversation State Call */ /******************************************************************/ DECLARE CMECS ENTRY ( CHAR(8), /* In - Conversation ID */ FIXED BINARY(31), /* Out - Conversation State */ FIXED BINARY(31) ) /* Out - Return Code */ EXTERNAL OPTIONS(ASM INTER); %skip; /******************************************************************/ /* CPI Communications Extract Conversation Type Call */ /******************************************************************/ DECLARE CMECT ENTRY ( CHAR(8), /* In - Conversation ID */ FIXED BINARY(31), /* Out - Conversation Type */ FIXED BINARY(31) ) /* Out - Return Code */ EXTERNAL OPTIONS(ASM INTER); %skip; /******************************************************************/ /* CPI Communications Extract Conversation Context */ /******************************************************************/ DECLARE CMECTX ENTRY ( CHAR(8), /* In - Conversation ID */ CHAR(32), /* Out - Context */ FIXED BINARY(31), /* Out - Context Length */ FIXED BINARY(31) ) /* Out - Return Code */ EXTERNAL OPTIONS(ASM INTER); %skip; /******************************************************************/ /* CPI Communications Extract Initialization Data Call */ /******************************************************************/ DECLARE CMEID ENTRY ( CHAR(8), /* In - Conversation ID */ CHAR(*), /* Out - Initialization Data */ FIXED BINARY(31), /* In - Requested Length */ FIXED BINARY(31), /* Out - Initialization Data Leng*/ FIXED BINARY(31) ) /* Out - Return Code */ EXTERNAL OPTIONS(ASM INTER); %skip; /******************************************************************/ /* CPI Communications Extract Maximum Buffer Size */ /******************************************************************/ DECLARE CMEMBS ENTRY ( FIXED BINARY(31), /* Out - Maximum Buffer Size */ FIXED BINARY(31) ) /* Out - Return Code */ EXTERNAL OPTIONS(ASM INTER); %skip; /******************************************************************/ /* CPI Communications Extract Mode Name Call */ /******************************************************************/ DECLARE CMEMN ENTRY ( CHAR(8), /* In - Conversation ID */ CHAR(8), /* Out - Mode Name */ FIXED BINARY(31), /* Out - Mode Name Length */ FIXED BINARY(31) ) /* Out - Return Code */ EXTERNAL OPTIONS(ASM INTER); %skip; /******************************************************************/ /* CPI Communications Extract Partner ID Call */ /******************************************************************/ DECLARE CMEPID ENTRY ( CHAR(8), /* In - Conversation ID */ FIXED BINARY(31), /* Out - Partner ID Type */ CHAR(*), /* Out - Partner ID */ FIXED BINARY(31), /* In - Requested Length */ FIXED BINARY(31), /* Out - Partner ID Length */ FIXED BINARY(31), /* Out - Partner ID Scope */ FIXED BINARY(31), /* Out - Directory Syntax */ FIXED BINARY(31), /* Out - Directory Encoding */ FIXED BINARY(31) ) /* Out - Return Code */ EXTERNAL OPTIONS(ASM INTER); %skip; /******************************************************************/ /* CPI Communications Extract Partner LU Name Call */ /******************************************************************/ DECLARE CMEPLN ENTRY ( CHAR(8), /* In - Conversation ID */ CHAR(17), /* Out - Partner LU Name */ FIXED BINARY(31), /* Out - Partner LU Name Length */ FIXED BINARY(31) ) /* Out - Return Code */ EXTERNAL OPTIONS(ASM INTER); %skip; /******************************************************************/ /* CPI Communications Extract Secondary Information Call */ /******************************************************************/ DECLARE CMESI ENTRY ( CHAR(8), /* In - Conversation ID */ FIXED BINARY(31), /* Out - Call ID */ CHAR(*), /* Out - Buffer */ FIXED BINARY(31), /* In - Requested Length */ FIXED BINARY(31), /* Out - Data Received */ FIXED BINARY(31), /* Out - Received Length */ FIXED BINARY(31) ) /* Out - Return Code */ EXTERNAL OPTIONS(ASM INTER); %skip; /******************************************************************/ /* CPI Communications Extract Sync Level Call */ /******************************************************************/ DECLARE CMESL ENTRY ( CHAR(8), /* In - Conversation ID */ FIXED BINARY(31), /* Out - Sync Level */ FIXED BINARY(31) ) /* Out - Return Code */ EXTERNAL OPTIONS(ASM INTER); %skip; /******************************************************************/ /* CPI Communications Extract_Send_Receive_Mode Call */ /******************************************************************/ DECLARE CMESRM ENTRY ( CHAR(8), /* In - Conversation ID */ FIXED BINARY(31), /* Out - Send Receive Mode */ FIXED BINARY(31) ) /* Out - Return Code */ EXTERNAL OPTIONS(ASM INTER); %skip; /******************************************************************/ /* CPI Communications Extract Security User ID Call */ /******************************************************************/ DECLARE CMESUI ENTRY ( CHAR(8), /* In - Conversation ID */ CHAR(10), /* Out - Security User ID */ FIXED BINARY(31), /* Out - Security User ID Length */ FIXED BINARY(31) ) /* Out - Return Code */ EXTERNAL OPTIONS(ASM INTER); %skip; /******************************************************************/ /* CPI Communications Extract TP Name Call */ /******************************************************************/ DECLARE CMETPN ENTRY ( CHAR(8), /* In - Conversation ID */ CHAR(64), /* Out - TP Name */ FIXED BINARY(31), /* Out - TP Name Length */ FIXED BINARY(31) ) /* Out - Return Code */ EXTERNAL OPTIONS(ASM INTER); %skip; /******************************************************************/ /* CPI Communications Extract Transaction Control Call */ /******************************************************************/ DECLARE CMETC ENTRY ( CHAR(8), /* In - Conversation ID */ FIXED BINARY(31), /* Out - Transaction Control */ FIXED BINARY(31) ) /* Out - Return Code */ EXTERNAL OPTIONS(ASM INTER); %skip; /******************************************************************/ /* CPI Communications Flush Call */ /******************************************************************/ DECLARE CMFLUS ENTRY ( CHAR(8), /* In - Conversation ID */ FIXED BINARY(31) ) /* Out - Return Code */ EXTERNAL OPTIONS(ASM INTER); %skip; /******************************************************************/ /* CPI Communications Include Partner In Transaction Call */ /******************************************************************/ DECLARE CMINCL ENTRY ( CHAR(8), /* In - Conversation ID */ FIXED BINARY(31) ) /* Out - Return Code */ EXTERNAL OPTIONS(ASM INTER); %skip; /******************************************************************/ /* CPI Communications Initialize For Incoming Call */ /******************************************************************/ DECLARE CMINIC ENTRY ( CHAR(8), /* Out - Conversation ID */ FIXED BINARY(31) ) /* Out - Return Code */ EXTERNAL OPTIONS(ASM INTER); %skip; /******************************************************************/ /* CPI Communications Initialize Conversation Call */ /******************************************************************/ DECLARE CMINIT ENTRY ( CHAR(8), /* Out - Conversation ID */ CHAR(8), /* In - Sym Dest Name */ FIXED BINARY(31) ) /* Out - Return Code */ EXTERNAL OPTIONS(ASM INTER); %skip; /******************************************************************/ /* CPI Communications Prepare Call */ /******************************************************************/ DECLARE CMPREP ENTRY ( CHAR(8), /* In - Conversation ID */ FIXED BINARY(31) ) /* Out - Return Code */ EXTERNAL OPTIONS(ASM INTER); %skip; /******************************************************************/ /* CPI Communications Prepare To Receive Call */ /******************************************************************/ DECLARE CMPTR ENTRY ( CHAR(8), /* In - Conversation ID */ FIXED BINARY(31) ) /* Out - Return Code */ EXTERNAL OPTIONS(ASM INTER); %skip; /******************************************************************/ /* CPI Communications Receive Call */ /******************************************************************/ DECLARE CMRCV ENTRY ( CHAR(8), /* In - Conversation ID */ CHAR(*), /* Out - Buffer */ FIXED BINARY(31), /* In - Requested Length */ FIXED BINARY(31), /* Out - Data Received */ FIXED BINARY(31), /* Out - Received Length */ FIXED BINARY(31), /* Out - Status Received */ FIXED BINARY(31), /* Out - Control Info Received */ FIXED BINARY(31) ) /* Out - Return Code */ EXTERNAL OPTIONS(ASM INTER); %skip; /******************************************************************/ /* CPI Communications Receive Expedited Data Call */ /******************************************************************/ DECLARE CMRCVX ENTRY ( CHAR(8), /* In - Conversation ID */ CHAR(*), /* Out - Buffer */ FIXED BINARY(31), /* In - Requested Length */ FIXED BINARY(31), /* Out - Received Length */ FIXED BINARY(31), /* In - Expedited Receive Type */ FIXED BINARY(31), /* Out - Control Information Rcvd*/ FIXED BINARY(31) ) /* Out - Return Code */ EXTERNAL OPTIONS(ASM INTER); %skip; /******************************************************************/ /* CPI Communications Release Local TP Name */ /******************************************************************/ DECLARE CMRLTP ENTRY ( CHAR(64), /* In - TP Name */ FIXED BINARY(31), /* In - TP Name Length */ FIXED BINARY(31) ) /* In - Return Code */ EXTERNAL OPTIONS(ASM INTER); %skip; /******************************************************************/ /* CPI Communications Request To Send Call */ /******************************************************************/ DECLARE CMRTS ENTRY ( CHAR(8), /* In - Conversation ID */ FIXED BINARY(31) ) /* Out - Return Code */ EXTERNAL OPTIONS(ASM INTER); %skip; /******************************************************************/ /* CPI Communications Send Data Call */ /******************************************************************/ DECLARE CMSEND ENTRY ( CHAR(8), /* In - Conversation ID */ CHAR(*), /* In - Buffer */ FIXED BINARY(31), /* In - Send Length */ FIXED BINARY(31), /* Out - Control Info Received */ FIXED BINARY(31) ) /* Out - Return Code */ EXTERNAL OPTIONS(ASM INTER); %skip; /******************************************************************/ /* CPI Communications Send Error Call */ /******************************************************************/ DECLARE CMSERR ENTRY ( CHAR(8), /* In - Conversation ID */ FIXED BINARY(31), /* Out - Control Info Received */ FIXED BINARY(31) ) /* Out - Return Code */ EXTERNAL OPTIONS(ASM INTER); %skip; /******************************************************************/ /* CPI Communications Send Expedited Data Call */ /******************************************************************/ DECLARE CMSNDX ENTRY ( CHAR(8), /* In - Conversation ID */ CHAR(*), /* In - Buffer */ FIXED BINARY(31), /* In - Send Length */ FIXED BINARY(31), /* Out - Control Information Rcvd*/ FIXED BINARY(31) ) /* Out - Return Code */ EXTERNAL OPTIONS(ASM INTER); %skip; /******************************************************************/ /* CPI Communications Set AE Qualifier Call */ /******************************************************************/ DECLARE CMSAEQ ENTRY ( CHAR(8), /* In - Conversation ID */ CHAR(*), /* In - AE Qualifier */ FIXED BINARY(31), /* In - AE Qualifier Length */ FIXED BINARY(31) ) /* Out - Return Code */ EXTERNAL OPTIONS(ASM INTER); %skip; /******************************************************************/ /* CPI Communications Set Allocate Confirm Call */ /******************************************************************/ DECLARE CMSAC ENTRY ( CHAR(8), /* In - Conversation ID */ FIXED BINARY(31), /* In - Allocate Confirm */ FIXED BINARY(31) ) /* Out - Return Code */ EXTERNAL OPTIONS(ASM INTER); %skip; /******************************************************************/ /* CPI Communications Set AP Title Call */ /******************************************************************/ DECLARE CMSAPT ENTRY ( CHAR(8), /* In - Conversation ID */ CHAR(*), /* In - AP Title */ FIXED BINARY(31), /* In - AP Title Length */ FIXED BINARY(31) ) /* Out - Return Code */ EXTERNAL OPTIONS(ASM INTER); %skip; /******************************************************************/ /* CPI Communications Set Application Context Name Call */ /******************************************************************/ DECLARE CMSACN ENTRY ( CHAR(8), /* In - Conversation ID */ CHAR(*), /* In - Application Context Name*/ FIXED BINARY(31), /* In - Application Context Leng*/ FIXED BINARY(31) ) /* Out - Return Code */ EXTERNAL OPTIONS(ASM INTER); %skip; /******************************************************************/ /* CPI Communications Set Begin Transaction Call */ /******************************************************************/ DECLARE CMSBT ENTRY ( CHAR(8), /* In - Conversation ID */ FIXED BINARY(31), /* In - Begin Transaction */ FIXED BINARY(31) ) /* Out - Return Code */ EXTERNAL OPTIONS(ASM INTER); %skip; /******************************************************************/ /* CPI Communications Set Confirmation Urgency Call */ /******************************************************************/ DECLARE CMSCU ENTRY ( CHAR(8), /* In - Conversation ID */ FIXED BINARY(31), /* In - Confirmation Urgency */ FIXED BINARY(31) ) /* Out - Return Code */ EXTERNAL OPTIONS(ASM INTER); %skip; /******************************************************************/ /* CPI Communications Set Conversation Type Call */ /******************************************************************/ DECLARE CMSCT ENTRY ( CHAR(8), /* In - Conversation ID */ FIXED BINARY(31), /* In - Conversation Type */ FIXED BINARY(31) ) /* Out - Return Code */ EXTERNAL OPTIONS(ASM INTER); %skip; /******************************************************************/ /* CPI Communications Set Conversation Security Password */ /******************************************************************/ DECLARE CMSCSP ENTRY ( CHAR(8), /* In - Conversation ID */ CHAR(10), /* In - Security Password */ FIXED BINARY(31), /* In - Security Password Length*/ FIXED BINARY(31) ) /* Out - Return Code */ EXTERNAL OPTIONS(ASM INTER); %skip; /******************************************************************/ /* CPI Communications Set Conversation Security Type */ /******************************************************************/ DECLARE CMSCST ENTRY ( CHAR(8), /* In - Conversation ID */ FIXED BINARY(31), /* In - Security Type */ FIXED BINARY(31) ) /* Out - Return Code */ EXTERNAL OPTIONS(ASM INTER); %skip; /******************************************************************/ /* CPI Communications Set Conversation Security User ID */ /******************************************************************/ DECLARE CMSCSU ENTRY ( CHAR(8), /* In - Conversation ID */ CHAR(10), /* In - Security User ID */ FIXED BINARY(31), /* In - Security User ID Length */ FIXED BINARY(31) ) /* Out - Return Code */ EXTERNAL OPTIONS(ASM INTER); %skip; /******************************************************************/ /* CPI Communications Set Deallocate Type Call */ /******************************************************************/ DECLARE CMSDT ENTRY ( CHAR(8), /* In - Conversation ID */ FIXED BINARY(31), /* In - Deallocate Type */ FIXED BINARY(31) ) /* Out - Return Code */ EXTERNAL OPTIONS(ASM INTER); %skip; /******************************************************************/ /* CPI Communications Set Error Direction Call */ /******************************************************************/ DECLARE CMSED ENTRY ( CHAR(8), /* In - Conversation ID */ FIXED BINARY(31), /* In - Error Direction */ FIXED BINARY(31) ) /* Out - Return Code */ EXTERNAL OPTIONS(ASM INTER); %skip; /******************************************************************/ /* CPI Communications Set Fill Call */ /******************************************************************/ DECLARE CMSF ENTRY ( CHAR(8), /* In - Conversation ID */ FIXED BINARY(31), /* In - Fill */ FIXED BINARY(31) ) /* Out - Return Code */ EXTERNAL OPTIONS(ASM INTER); %skip; /******************************************************************/ /* CPI Communications Set Initialization Data Call */ /******************************************************************/ DECLARE CMSID ENTRY ( CHAR(8), /* In - Conversation ID */ CHAR(*), /* In - Initialization Data */ FIXED BINARY(31), /* In - Initialization Data Leng*/ FIXED BINARY(31) ) /* Out - Return Code */ EXTERNAL OPTIONS(ASM INTER); %skip; /******************************************************************/ /* CPI Communications Set Log Data Call */ /******************************************************************/ DECLARE CMSLD ENTRY ( CHAR(8), /* In - Conversation ID */ CHAR(*), /* In - Log Data */ FIXED BINARY(31), /* In - Log Data Length */ FIXED BINARY(31) ) /* Out - Return Code */ EXTERNAL OPTIONS(ASM INTER); %skip; /******************************************************************/ /* CPI Communications Set Mode Name Call */ /******************************************************************/ DECLARE CMSMN ENTRY ( CHAR(8), /* In - Conversation ID */ CHAR(8), /* In - Mode Name */ FIXED BINARY(31), /* In - Mode Name Length */ FIXED BINARY(31) ) /* Out - Return Code */ EXTERNAL OPTIONS(ASM INTER); %skip; /******************************************************************/ /* CPI Communications Set Partner ID Call */ /******************************************************************/ DECLARE CMSPID ENTRY ( CHAR(8), /* In - Conversation ID */ FIXED BINARY(31), /* In - Partner ID Type */ CHAR(*), /* In - Partner ID */ FIXED BINARY(31), /* In - Partner ID Length */ FIXED BINARY(31), /* In - Partner ID Scope */ FIXED BINARY(31), /* In - Directory Syntax */ FIXED BINARY(31), /* In - Directory Encoding */ FIXED BINARY(31) ) /* Out - Return Code */ EXTERNAL OPTIONS(ASM INTER); %skip; /******************************************************************/ /* CPI Communications Set Partner LU Name Call */ /******************************************************************/ DECLARE CMSPLN ENTRY ( CHAR(8), /* In - Conversation ID */ CHAR(17), /* In - Partner LU Name */ FIXED BINARY(31), /* In - Partner LU Name Length */ FIXED BINARY(31) ) /* Out - Return Code */ EXTERNAL OPTIONS(ASM INTER); %skip; /******************************************************************/ /* CPI Communications Set Prepare Data Permitted Call */ /******************************************************************/ DECLARE CMSPDP ENTRY ( CHAR(8), /* In - Conversation ID */ FIXED BINARY(31), /* In - Prepare Data Permitted */ FIXED BINARY(31) ) /* Out - Return Code */ EXTERNAL OPTIONS(ASM INTER); %skip; /******************************************************************/ /* CPI Communications Set Prepare To Receive Type Call */ /******************************************************************/ DECLARE CMSPTR ENTRY ( CHAR(8), /* In - Conversation ID */ FIXED BINARY(31), /* In - Prepare To Receive Type */ FIXED BINARY(31) ) /* Out - Return Code */ EXTERNAL OPTIONS(ASM INTER); %skip; /******************************************************************/ /* CPI Communications Set Processing Mode Call */ /******************************************************************/ DECLARE CMSPM ENTRY ( CHAR(8), /* In - Conversation ID */ FIXED BINARY(31), /* In - Processing Mode */ FIXED BINARY(31) ) /* Out - Return Code */ EXTERNAL OPTIONS(ASM INTER); %skip; /******************************************************************/ /* CPI Communications Set Queue Processing Mode Call */ /******************************************************************/ DECLARE CMSQPM ENTRY ( CHAR(8), /* In - Conversation ID */ FIXED BINARY(31), /* In - Conversation Queue */ FIXED BINARY(31), /* In - Queue Processing Mode */ CHAR(8), /* In - User Field */ FIXED BINARY(31), /* Out - OOID */ FIXED BINARY(31) ) /* Out - Return Code */ EXTERNAL OPTIONS(ASM INTER); %skip; /******************************************************************/ /* CPI Communications Set Receive Type Call */ /******************************************************************/ DECLARE CMSRT ENTRY ( CHAR(8), /* In - Conversation ID */ FIXED BINARY(31), /* In - Receive Type */ FIXED BINARY(31) ) /* Out - Return Code */ EXTERNAL OPTIONS(ASM INTER); %skip; /******************************************************************/ /* CPI Communications Set Return Control Call */ /******************************************************************/ DECLARE CMSRC ENTRY ( CHAR(8), /* In - Conversation ID */ FIXED BINARY(31), /* In - Return Control */ FIXED BINARY(31) ) /* Out - Return Code */ EXTERNAL OPTIONS(ASM INTER); %skip; /******************************************************************/ /* CPI Communications Set Send Receive Mode Call */ /******************************************************************/ DECLARE CMSSRM ENTRY ( CHAR(8), /* In - Conversation ID */ FIXED BINARY(31), /* In - Send Receive Mode */ FIXED BINARY(31) ) /* Out - Return Code */ EXTERNAL OPTIONS(ASM INTER); %skip; /******************************************************************/ /* CPI Communications Set Send Type Call */ /******************************************************************/ DECLARE CMSST ENTRY ( CHAR(8), /* In - Conversation ID */ FIXED BINARY(31), /* In - Send Type */ FIXED BINARY(31) ) /* Out - Return Code */ EXTERNAL OPTIONS(ASM INTER); %skip; /******************************************************************/ /* CPI Communications Set Sync Level Call */ /******************************************************************/ DECLARE CMSSL ENTRY ( CHAR(8), /* In - Conversation ID */ FIXED BINARY(31), /* In - Sync Level */ FIXED BINARY(31) ) /* Out - Return Code */ EXTERNAL OPTIONS(ASM INTER); %skip; /******************************************************************/ /* CPI Communications Set TP Name Call */ /******************************************************************/ DECLARE CMSTPN ENTRY ( CHAR(8), /* In - Conversation ID */ CHAR(64), /* In - TP Name */ FIXED BINARY(31), /* In - TP Name Length */ FIXED BINARY(31) ) /* Out - Return Code */ EXTERNAL OPTIONS(ASM INTER); %skip; /******************************************************************/ /* CPI Communications Set Transaction Control Call */ /******************************************************************/ DECLARE CMSTC ENTRY ( CHAR(8), /* In - Conversation ID */ FIXED BINARY(31), /* In - Transaction Control */ FIXED BINARY(31) ) /* Out - Return Code */ EXTERNAL OPTIONS(ASM INTER); %skip; /******************************************************************/ /* CPI Communications Specify Local TP Name */ /******************************************************************/ DECLARE CMSLTP ENTRY ( CHAR(64), /* In - TP Name */ FIXED BINARY(31), /* In - TP Name Length */ FIXED BINARY(31) ) /* Out - Return Code */ EXTERNAL OPTIONS(ASM INTER); %skip; /******************************************************************/ /* CPI Communications Test Request To Send Received Call */ /******************************************************************/ DECLARE CMTRTS ENTRY ( CHAR(8), /* In - Conversation ID */ FIXED BINARY(31), /* Out - Control Info Received */ FIXED BINARY(31) ) /* Out - Return Code */ EXTERNAL OPTIONS(ASM INTER); %skip; /******************************************************************/ /* CPI Communications Wait For Conversation Call */ /******************************************************************/ DECLARE CMWAIT ENTRY ( CHAR(8), /* Out - Conversation ID */ FIXED BINARY(31), /* Out - Conversation Return Code*/ FIXED BINARY(31) ) /* Out - Return Code */ EXTERNAL OPTIONS(ASM INTER); %skip; /******************************************************************/ /* CPI Communications Wait For Completion Call */ /******************************************************************/ DECLARE CMWCMP ENTRY ( CHAR(*), /* In - OOID List */ FIXED BINARY(31), /* In - OOID List Count */ FIXED BINARY(31), /* In - Timeout */ CHAR(*), /* Out - Completed OP Index List */ FIXED BINARY(31), /* Out - Completed OP Count */ CHAR(*), /* Out - User Field List */ FIXED BINARY(31) ) /* Out - Return Code */ EXTERNAL OPTIONS(ASM INTER); /* */ /************************* End of Pseudonyms **********************/ ---------------------------- REXX Pseudonym File (CMREXX) /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ /* */ /* CPI Communications Pseudonyms - SC31-6180-01 */ /* */ /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ /* AE_qualifier_format */ CM_DN = 0 /* AP_title_format */ CM_OID = 1 CM_INT_DIGITS = 2 /* allocate_confirm */ CM_ALLOCATE_NO_CONFIRM = 0 CM_ALLOCATE_CONFIRM = 1 /* begin_transaction */ CM_BEGIN_IMPLICIT = 0 CM_BEGIN_EXPLICIT = 1 /* call_ID */ CM_CMACCI = 1 CM_CMACCP = 2 CM_CMALLC = 3 CM_CMCANC = 4 CM_CMCFM = 5 CM_CMCFMD = 6 CM_CMCNVI = 7 CM_CMCNVO = 8 CM_CMDEAL = 9 CM_CMDFDE = 10 CM_CMEACN = 11 CM_CMEAEQ = 12 CM_CMEAPT = 13 CM_CMECS = 14 CM_CMECT = 15 CM_CMECTX = 16 CM_CMEID = 17 CM_CMEMBS = 18 CM_CMEMN = 19 CM_CMEPID = 20 CM_CMEPLN = 21 CM_CMESI = 22 CM_CMESL = 23 CM_CMESRM = 24 CM_CMESUI = 25 CM_CMETC = 26 CM_CMETPN = 27 CM_CMFLUS = 28 CM_CMINCL = 29 CM_CMINIC = 30 CM_CMINIT = 31 CM_CMPREP = 32 CM_CMPTR = 33 CM_CMRCV = 34 CM_CMRCVX = 35 CM_CMRLTP = 36 CM_CMRTS = 37 CM_CMSAC = 38 CM_CMSACN = 39 CM_CMSAEQ = 40 CM_CMSAPT = 41 CM_CMSBT = 42 CM_CMSCSP = 43 CM_CMSCST = 44 CM_CMSCSU = 45 CM_CMSCT = 46 CM_CMSCU = 47 CM_CMSDT = 48 CM_CMSED = 49 CM_CMSEND = 50 CM_CMSERR = 51 CM_CMSF = 52 CM_CMSID = 53 CM_CMSLD = 54 CM_CMSLTP = 55 CM_CMSMN = 56 CM_CMSNDX = 57 CM_CMSPDP = 58 CM_CMSPID = 59 CM_CMSPLN = 60 CM_CMSPM = 61 CM_CMSPTR = 62 CM_CMSQCF = 63 CM_CMSQPM = 64 CM_CMSRC = 65 CM_CMSRT = 66 CM_CMSSL = 67 CM_CMSSRM = 68 CM_CMSST = 69 CM_CMSTC = 70 CM_CMSTPN = 71 CM_CMTRTS = 72 CM_CMWAIT = 73 CM_CMWCMP = 74 /* confirmation_urgency */ CM_CONFIRMATION_NOT_URGENT = 0 CM_CONFIRMATION_URGENT = 1 /* control_information_received */ CM_REQ_TO_SEND_NOT_RECEIVED = 0 /* request_to_send_received */ CM_REQ_TO_SEND_RECEIVED = 1 CM_ALLOCATE_CONFIRMED = 2 CM_ALLOCATE_CONFIRMED_WITH_DATA = 3 CM_ALLOCATE_REJECTED_WITH_DATA = 4 CM_EXPEDITED_DATA_AVAILABLE = 5 CM_RTS_RCVD_AND_EXP_DATA_AVAIL = 6 /* conversation_queue */ CM_INITIALIZATION_QUEUE = 0 CM_SEND_QUEUE = 1 CM_RECEIVE_QUEUE = 2 CM_SEND_RECEIVE_QUEUE = 3 CM_EXPEDITED_SEND_QUEUE = 4 CM_EXPEDITED_RECEIVE_QUEUE = 5 /* conversation_state */ CM_INITIALIZE_STATE = 2 CM_SEND_STATE = 3 CM_RECEIVE_STATE = 4 CM_SEND_PENDING_STATE = 5 CM_CONFIRM_STATE = 6 CM_CONFIRM_SEND_STATE = 7 CM_CONFIRM_DEALLOCATE_STATE = 8 CM_DEFER_RECEIVE_STATE = 9 CM_DEFER_DEALLOCATE_STATE = 10 CM_SYNC_POINT_STATE = 11 CM_SYNC_POINT_SEND_STATE = 12 CM_SYNC_POINT_DEALLOCATE_STATE = 13 CM_INITIALIZE_INCOMING_STATE = 14 CM_SEND_ONLY_STATE = 15 CM_RECEIVE_ONLY_STATE = 16 CM_SEND_RECEIVE_STATE = 17 CM_PREPARED_STATE = 18 /* conversation_type */ CM_BASIC_CONVERSATION = 0 CM_MAPPED_CONVERSATION = 1 /* conversation_security_type */ CM_SECURITY_NONE = 0 CM_SECURITY_SAME = 1 CM_SECURITY_PROGRAM = 2 CM_SECURITY_DISTRIBUTED = 3 CM_SECURITY_MUTUAL = 4 CM_SECURITY_PROGRAM_STRONG = 5 /* data_received */ CM_NO_DATA_RECEIVED = 0 CM_DATA_RECEIVED = 1 CM_COMPLETE_DATA_RECEIVED = 2 CM_INCOMPLETE_DATA_RECEIVED = 3 /* deallocate_type */ CM_DEALLOCATE_SYNC_LEVEL = 0 CM_DEALLOCATE_FLUSH = 1 CM_DEALLOCATE_CONFIRM = 2 CM_DEALLOCATE_ABEND = 3 /* directory_encoding */ CM_DEFAULT_ENCODING = 0 CM_UNICODE_ENCODING = 1 /* directory_syntax */ CM_DEFAULT_SYNTAX = 0 CM_DCE_SYNTAX = 1 CM_XDS_SYNTAX = 2 CM_NDS_SYNTAX = 3 /* error_direction */ CM_RECEIVE_ERROR = 0 CM_SEND_ERROR = 1 /* fill */ CM_FILL_LL = 0 CM_FILL_BUFFER = 1 /* partner_ID_scope */ CM_EXPLICIT = 0 CM_REFERENCE = 1 /* partner_ID_type */ CM_DISTINGUISHED_NAME = 0 CM_LOCAL_DISTINGUISHED_NAME = 1 CM_PROGRAM_FUNCTION_ID = 2 CM_OSI_TPSU_TITLE_OID = 3 CM_PROGRAM_BINDING = 4 /* prepare_data_permitted */ CM_PREPARE_DATA_NOT_PERMITTED = 0 CM_PREPARE_DATA_PERMITTED = 1 /* prepare_to_receive_type */ CM_PREP_TO_RECEIVE_SYNC_LEVEL = 0 CM_PREP_TO_RECEIVE_FLUSH = 1 CM_PREP_TO_RECEIVE_CONFIRM = 2 /* processing_mode */ /* queue_processing_mode */ CM_BLOCKING = 0 CM_NON_BLOCKING = 1 /* receive_type */ CM_RECEIVE_AND_WAIT = 0 /* expedited_receive_type */ CM_RECEIVE_IMMEDIATE = 1 /* return_code */ CM_OK = 0 /* conversation_return_code */ CM_ALLOCATE_FAILURE_NO_RETRY = 1 CM_ALLOCATE_FAILURE_RETRY = 2 CM_CONVERSATION_TYPE_MISMATCH = 3 CM_PIP_NOT_SPECIFIED_CORRECTLY = 5 CM_SECURITY_NOT_VALID = 6 CM_SYNC_LVL_NOT_SUPPORTED_LU = 7 CM_SYNC_LVL_NOT_SUPPORTED_SYS = 7 CM_SYNC_LVL_NOT_SUPPORTED_PGM = 8 CM_TPN_NOT_RECOGNIZED = 9 CM_TP_NOT_AVAILABLE_NO_RETRY = 10 CM_TP_NOT_AVAILABLE_RETRY = 11 CM_DEALLOCATED_ABEND = 17 CM_DEALLOCATED_NORMAL = 18 CM_PARAMETER_ERROR = 19 CM_PRODUCT_SPECIFIC_ERROR = 20 CM_PROGRAM_ERROR_NO_TRUNC = 21 CM_PROGRAM_ERROR_PURGING = 22 CM_PROGRAM_ERROR_TRUNC = 23 CM_PROGRAM_PARAMETER_CHECK = 24 CM_PROGRAM_STATE_CHECK = 25 CM_RESOURCE_FAILURE_NO_RETRY = 26 CM_RESOURCE_FAILURE_RETRY = 27 CM_UNSUCCESSFUL = 28 CM_DEALLOCATED_ABEND_SVC = 30 CM_DEALLOCATED_ABEND_TIMER = 31 CM_SVC_ERROR_NO_TRUNC = 32 CM_SVC_ERROR_PURGING = 33 CM_SVC_ERROR_TRUNC = 34 CM_OPERATION_INCOMPLETE = 35 CM_SYSTEM_EVENT = 36 CM_OPERATION_NOT_ACCEPTED = 37 CM_CONVERSATION_ENDING = 38 CM_SEND_RCV_MODE_NOT_SUPPORTED = 39 CM_BUFFER_TOO_SMALL = 40 CM_EXP_DATA_NOT_SUPPORTED = 41 CM_DEALLOC_CONFIRM_REJECT = 42 CM_ALLOCATION_ERROR = 43 CM_RETRY_LIMIT_EXCEEDED = 44 CM_NO_SECONDARY_INFORMATION = 45 CM_SECURITY_NOT_SUPPORTED = 46 CM_SECURITY_MUTUAL_FAILED = 47 CM_CALL_NOT_SUPPORTED = 48 CM_PARM_VALUE_NOT_SUPPORTED = 49 CM_TAKE_BACKOUT = 100 CM_DEALLOCATED_ABEND_BO = 130 CM_DEALLOCATED_ABEND_SVC_BO = 131 CM_DEALLOCATED_ABEND_TIMER_BO = 132 CM_RESOURCE_FAIL_NO_RETRY_BO = 133 CM_RESOURCE_FAILURE_RETRY_BO = 134 CM_DEALLOCATED_NORMAL_BO = 135 CM_CONV_DEALLOC_AFTER_SYNCPT = 136 CM_INCLUDE_PARTNER_REJECT_BO = 137 /* return_control */ CM_WHEN_SESSION_ALLOCATED = 0 CM_IMMEDIATE = 1 /* send_receive_mode */ CM_HALF_DUPLEX = 0 CM_FULL_DUPLEX = 1 /* send_type */ CM_BUFFER_DATA = 0 CM_SEND_AND_FLUSH = 1 CM_SEND_AND_CONFIRM = 2 CM_SEND_AND_PREP_TO_RECEIVE = 3 CM_SEND_AND_DEALLOCATE = 4 /* status_received */ CM_NO_STATUS_RECEIVED = 0 CM_SEND_RECEIVED = 1 CM_CONFIRM_RECEIVED = 2 CM_CONFIRM_SEND_RECEIVED = 3 CM_CONFIRM_DEALLOC_RECEIVED = 4 CM_TAKE_COMMIT = 5 CM_TAKE_COMMIT_SEND = 6 CM_TAKE_COMMIT_DEALLOCATE = 7 CM_TAKE_COMMIT_DATA_OK = 8 CM_TAKE_COMMIT_SEND_DATA_OK = 9 CM_TAKE_COMMIT_DEALLOC_DATA_OK = 10 CM_PREPARE_OK = 11 CM_JOIN_TRANSACTION = 12 /* sync_level */ CM_NONE = 0 CM_CONFIRM = 1 CM_SYNC_POINT = 2 CM_SYNC_POINT_NO_CONFIRM = 3 /* transaction_control */ CM_CHAINED_TRANSACTIONS = 0 CM_UNCHAINED_TRANSACTIONS = 1 /* */ /* ********************** End of Pseudonyms ************************** */ -------------------------- RPG Pseudonym File (CMRPG) I* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * I* * I* CPI COMMUNICATIONS PSEUDONYMS -- SC31-6180-01 * I* * I* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * I* ICMCONS DS I****************************************************************** I* AE_QUALIFIER_FORMAT, AP_TITLE_FORMAT VALUES: I* I* CM_DN -- VALUE 0 (DN) I* CM_OID -- VALUE 1 (OID) I* CM_INT_DIGITS -- VALUE 2 (INTDIG) I* I 0 C DN I 1 C OID I****************************************************************** I* ALLOCATE_CONFIRM VALUES: I* I* CM_ALLOCATE_NO_CONFIRM -- VALUE 0 (ANCNF) I* CM_ALLOCATE_CONFIRM -- VALUE 1 (ACNF) I* I 0 C ANCNF I 1 C ACNF I****************************************************************** I* BEGIN_TRANSACTION VALUES: I* I* CM_BEGIN_IMPLICIT -- VALUE 0 (BGNIMP) I* CM_BEGIN_EXPLICIT -- VALUE 1 (BGNEXP) I* I 0 C BGNIMP I 1 C BGNEXP I****************************************************************** I* CALL_ID VALUES: I* I* CM_CMACCI -- VALUE 1 (ACCI) I* CM_CMACCP -- VALUE 2 (ACCP) I* CM_CMALLC -- VALUE 3 (ALLC) I* CM_CMCANC -- VALUE 4 (CANC) I* CM_CMCFM -- VALUE 5 (CFM) I* CM_CMCFMD -- VALUE 6 (CFMD) I* CM_CMCNVI -- VALUE 7 (CNVI) I* CM_CMCNVO -- VALUE 8 (CNVO) I* CM_CMDEAL -- VALUE 9 (DEAL) I* CM_CMDFDE -- VALUE 10 (DFDE) I* CM_CMEACN -- VALUE 11 (EACN) I* CM_CMEAEQ -- VALUE 12 (EAEQ) I* CM_CMEAPT -- VALUE 13 (EAPT) I* CM_CMECS -- VALUE 14 (ECS) I* CM_CMECT -- VALUE 15 (ECT) I* CM_CMECTX -- VALUE 16 (ECTX) I* CM_CMEID -- VALUE 17 (EID) I* CM_CMEMBS -- VALUE 18 (EMBS) I* CM_CMEMN -- VALUE 19 (EMN) I* CM_CMEPID -- VALUE 20 (EPID) I* CM_CMEPLN -- VALUE 21 (EPLN) I* CM_CMESI -- VALUE 22 (ESI) I* CM_CMESL -- VALUE 23 (ESL) I* CM_CMESRM -- VALUE 24 (ESRM) I* CM_CMESUI -- VALUE 25 (ESUI) I* CM_CMETC -- VALUE 26 (ETC) I* CM_CMETPN -- VALUE 27 (ETPN) I* CM_CMFLUS -- VALUE 28 (FLUS) I* CM_CMINCL -- VALUE 29 (INCL) I* CM_CMINIC -- VALUE 30 (INIC) I* CM_CMINIT -- VALUE 31 (INIT) I* CM_CMPREP -- VALUE 32 (PREP) I* CM_CMPTR -- VALUE 33 (PTR) I* CM_CMRCV -- VALUE 34 (RCV) I* CM_CMRCVX -- VALUE 35 (RCVX) I* CM_CMRLTP -- VALUE 36 (RLTP) I* CM_CMRTS -- VALUE 37 (RTS) I* CM_CMSAC -- VALUE 38 (SAC) I* CM_CMSACN -- VALUE 39 (SACN) I* CM_CMSAEQ -- VALUE 40 (SAEQ) I* CM_CMSAPT -- VALUE 41 (SAPT) I* CM_CMSBT -- VALUE 42 (SBT) I* CM_CMSCSP -- VALUE 43 (SCSP) I* CM_CMSCST -- VALUE 44 (SCST) I* CM_CMSCSU -- VALUE 45 (SCSU) I* CM_CMSCT -- VALUE 46 (SCT) I* CM_CMSCU -- VALUE 47 (SCU) I* CM_CMSDT -- VALUE 48 (SDT) I* CM_CMSED -- VALUE 49 (SED) I* CM_CMSEND -- VALUE 50 (SEND) I* CM_CMSERR -- VALUE 51 (SERR) I* CM_CMSF -- VALUE 52 (SF) I* CM_CMSID -- VALUE 53 (SID) I* CM_CMSLD -- VALUE 54 (SLD) I* CM_CMSLTP -- VALUE 55 (SLTP) I* CM_CMSMN -- VALUE 56 (SMN) I* CM_CMSNDX -- VALUE 57 (SNDX) I* CM_CMSPDP -- VALUE 58 (SPDP) I* CM_CMSPID -- VALUE 59 (SPID) I* CM_CMSPLN -- VALUE 60 (SPLN) I* CM_CMSPM -- VALUE 61 (SPM) I* CM_CMSPTR -- VALUE 62 (SPTR) I* CM_CMSQCF -- VALUE 63 (SQCF) I* CM_CMSQPM -- VALUE 64 (SQPM) I* CM_CMSRC -- VALUE 65 (SRC) I* CM_CMSRT -- VALUE 66 (SRT) I* CM_CMSSL -- VALUE 67 (SSL) I* CM_CMSSRM -- VALUE 68 (SSRM) I* CM_CMSST -- VALUE 69 (SST) I* CM_CMSTC -- VALUE 70 (STC) I* CM_CMSTPN -- VALUE 71 (STPN) I* CM_CMTRTS -- VALUE 72 (TRTS) I* CM_CMWAIT -- VALUE 73 (WAIT) I* CM_CMWCMP -- VALUE 74 (WCMP) I* I 1 C ACCI I 2 C ACCP I 3 C ALLC I 4 C CANC I 5 C CFM I 6 C CFMD I 7 C CNVI I 8 C CNVO I 9 C DEAL I 10 C DFDE I 11 C EACN I 12 C EAEQ I 13 C EAPT I 14 C ECS I 15 C ECT I 16 C ECTX I 17 C EID I 18 C EMBS I 19 C EMN I 20 C EPID I 21 C EPLN I 22 C ESI I 23 C ESL I 24 C ESRM I 25 C ESUI I 26 C ETC I 27 C ETPN I 28 C FLUS I 29 C INCL I 30 C INIC I 31 C INIT I 32 C PREP I 33 C PTR I 34 C RCV I 35 C RCVX I 36 C RLTP I 37 C RTS I 38 C SAC I 39 C SACN I 40 C SAEQ I 41 C SAPT I 42 C SBT I 43 C SCSP I 44 C SCST I 45 C SCSU I 46 C SCT I 47 C SCU I 48 C SDT I 49 C SED I 50 C SEND I 51 C SERR I 52 C SF I 53 C SID I 54 C SLD I 55 C SLTP I 56 C SMN I 57 C SNDX I 58 C SPDP I 59 C SPID I 60 C SPLN I 61 C SPM I 62 C SPTR I 63 C SQCF I 64 C SQPM I 65 C SRC I 66 C SRT I 67 C SSL I 68 C SSRM I 69 C SST I 70 C STC I 71 C STPN I 72 C TRTS I 73 C WAIT I 74 C WCMP I****************************************************************** I* CONFIRMATION_URGENCY VALUES: I* I* CM_CONFIRMATION_NOT_URGENT -- VALUE 0 (CNURG) I* CM_CONFIRMATION_URGENT -- VALUE 1 (CURG) I* I 0 C CNURG I 1 C CURG I****************************************************************** I* CONTROL_INFORMATION_RECEIVED, REQUEST_TO_SEND_RECEIVED VALUES: I* I* CM_REQ_TO_SEND_NOT_RECEIVED -- VALUE 0 (RTSNOT) I* CM_REQ_TO_SEND_RECEIVED -- VALUE 1 (RTSREC) I* CM_ALLOCATE_CONFIRMED -- VALUE 2 (RTSAC) I* CM_ALLOCATE_CONFIRMED_WITH_DATA -- VALUE 3 (RTSACD) I* CM_ALLOCATE_REJECTED_WITH_DATA -- VALUE 4 (RTSARD) I* CM_EXPEDITED_DATA_AVAILABLE -- VALUE 5 (EXPDAV) I* CM_RTS_RCVD_AND_EXP_DATA_AVAIL -- VALUE 6 (RTSEXP) I* I 0 C RTSNOT I 1 C RTSREC I 2 C RTSAC I 3 C RTSACD I 4 C RTSARD I 5 C EXPDAV I 6 C RTSEXP I****************************************************************** I* CONVERSATION_QUEUE VALUES: I* I* CM_INITIALIZATION_QUEUE -- VALUE 0 (INITQ) I* CM_SEND_QUEUE -- VALUE 1 (SENDQ) I* CM_RECEIVE_QUEUE -- VALUE 2 (RCVQ) I* CM_SEND_RECEIVE_QUEUE -- VALUE 3 (SNRCVQ) I* CM_EXPEDITED_SEND_QUEUE -- VALUE 4 (XSENDQ) I* CM_EXPEDITED_RECEIVE_QUEUE -- VALUE 5 (XRCVQ) I* I 0 C INITQ I 1 C SENDQ I 2 C RCVQ I 3 C SNRCVQ I 4 C XSENDQ I 5 C XRCVQ I****************************************************************** I* CONVERSATION_STATE VALUES: I* I* CM_INITIALIZE_STATE -- VALUE 2 (INITST) I* CM_SEND_STATE -- VALUE 3 (SENDST) I* CM_RECEIVE_STATE -- VALUE 4 (RCVST) I* CM_SEND_PENDING_STATE -- VALUE 5 (SPNDST) I* CM_CONFIRM_STATE -- VALUE 6 (CFMST) I* CM_CONFIRM_SEND_STATE -- VALUE 7 (CSNDST) I* CM_CONFIRM_DEALLOCATE_STATE -- VALUE 8 (CDEAST) I* CM_DEFER_RECEIVE_STATE -- VALUE 9 (DRCVST) I* CM_DEFER_DEALLOCATE_STATE -- VALUE 10 (DDEAST) I* CM_SYNC_POINT_STATE -- VALUE 11 (SPST) I* CM_SYNC_POINT_SEND_STATE -- VALUE 12 (SPSST) I* CM_SYNC_POINT_DEALLOCATE_STATE -- VALUE 13 (SPDST) I* CM_INITIALIZE_INCOMING_STATE -- VALUE 14 (INCOM) I* CM_SEND_ONLY_STATE -- VALUE 15 (SPSNDO) I* CM_RECEIVE_ONLY_STATE -- VALUE 16 (SPRCVO) I* CM_SEND_RECEIVE_STATE -- VALUE 17 (INSNRC) I* CM_PREPARED_STATE -- VALUE 18 (PREPED) I* I 2 C INITST I 3 C SENDST I 4 C RCVST I 5 C SPNDST I 6 C CFMST I 7 C CSNDST I 8 C CDEAST I 9 C DRCVST I 10 C DDEAST I 11 C SPST I 12 C SPSST I 13 C SPDST I 14 C INCOM I 15 C SNDO I 16 C RCVO I 17 C SNRC I 18 C PREPED I****************************************************************** I* CONVERSATION_TYPE VALUES: I* I* CM_BASIC_CONVERSATION -- VALUE 0 (BASIC) I* CM_MAPPED_CONVERSATION -- VALUE 1 (MAPPED) I* I 0 C BASIC I 1 C MAPPED I****************************************************************** I* CONVERSATION_SECURITY_TYPE VALUES: I* I* CM_SECURITY_NONE -- VALUE 0 (NONE) I* CM_SECURITY_SAME -- VALUE 1 (SAME) I* CM_SECURITY_PROGRAM -- VALUE 2 (PROGRM) I* CM_SECURITY_DISTRIBUTED -- VALUE 3 (DISTRB) I* CM_SECURITY_MUTUAL -- VALUE 4 (MUTUAL) I* CM_SECURITY_PROGRAM_STRONG -- VALUE 5 (PROGST) I* I 0 C NONE I 1 C SAME I 2 C PROGRM I 3 C DISTRB I 4 C MUTUAL I 5 C PROGST I****************************************************************** I* DATA_RECEIVED VALUES: I* I* CM_NO_DATA_RECEIVED -- VALUE 0 (NODATA) I* CM_DATA_RECEIVED -- VALUE 1 (DATREC) I* CM_COMPLETE_DATA_RECEIVED -- VALUE 2 (COMDAT) I* CM_INCOMPLETE_DATA_RECEIVED -- VALUE 3 (INCDAT) I* I 0 C NODATA I 1 C DATREC I 2 C COMDAT I 3 C INCDAT I****************************************************************** I* DEALLOCATE_TYPE VALUES: I* I* CM_DEALLOCATE_SYNC_LEVEL -- VALUE 0 (DESYNC) I* CM_DEALLOCATE_FLUSH -- VALUE 1 (DEFLUS) I* CM_DEALLOCATE_CONFIRM -- VALUE 2 (DECONF) I* CM_DEALLOCATE_ABEND -- VALUE 3 (DEABTY) I* I 0 C DESYNC I 1 C DEFLUS I 2 C DECONF I 3 C DEABTY I****************************************************************** I* DIRECTORY_ENCODING VALUES: I* I* CM_DEFAULT_ENCODING -- VALUE 0 (DENCOD) I* CM_UNICODE_ENCODING -- VALUE 1 (UENCOD) I* I 0 C DENCOD I 1 C UENCOD I****************************************************************** I* DIRECTORY_SYNTAX VALUES: I* I* CM_DEFAULT_SYNTAX -- VALUE 0 (DEFSYN) I* CM_DCE_SYNTAX -- VALUE 1 (DCESYN) I* CM_XDS_SYNTAX -- VALUE 2 (XDSSYN) I* CM_NDS_SYNTAX -- VALUE 3 (NDSSYN) I* I 0 C DEFSYN I 1 C DCESYN I 2 C XDSSYN I 3 C NDSSYN I****************************************************************** I* ERROR_DIRECTION VALUES: I* I* CM_RECEIVE_ERROR -- VALUE 0 (RCVERR) I* CM_SEND_ERROR -- VALUE 1 (SNDERR) I* I 0 C RCVERR I 1 C SNDERR I****************************************************************** I* FILL VALUES: I* I* CM_FILL_LL -- VALUE 0 (FILLL) I* CM_FILL_BUFFER -- VALUE 1 (FILBUF) I* I 0 C FILLL I 1 C FILBUF I****************************************************************** I* PARTNER_ID_SCOPE VALUES: I* I* CM_EXPLICIT -- VALUE 0 (XPLCIT) I* CM_REFERENCE -- VALUE 1 (RFRNCE) I* I 0 C XPLCIT I 1 C RFRNCE I****************************************************************** I* PARTNER_ID_TYPE VALUES: I* I* CM_DISTINGUISHED_NAME -- VALUE 0 (DSTNAM) I* CM_LOCAL_DISTINGUISHED_NAME -- VALUE 1 (LDSTNM) I* CM_PROGRAM_FUNCTION_ID -- VALUE 2 (PFID) I* CM_OSI_TPSU_TITLE_OID -- VALUE 3 (TPSUTI) I* CM_PROGRAM_BINDING -- VALUE 4 (PRGBND) I* I 0 C DSTNAM I 1 C LDSTNM I 2 C PFID I 3 C TPSUTI I 4 C PRGBND I****************************************************************** I* PREPARE_DATA_PERMITTED VALUES: I* I* CM_PREPARE_DATA_NOT_PERMITTED -- VALUE 0 (PDNP) I* CM_PREPARE_DATA_PERMITTED -- VALUE 1 (PDP) I* I 0 C PDNP I 1 C PDP I****************************************************************** I* PREPARE_TO_RECEIVE_TYPE VALUES: I* I* CM_PREP_TO_RECEIVE_SYNC_LEVEL -- VALUE 0 (PTRSL) I* CM_PREP_TO_RECEIVE_FLUSH -- VALUE 1 (PTRFLS) I* CM_PREP_TO_RECEIVE_CONFIRM -- VALUE 2 (PTRCON) I* I 0 C PTRSL I 1 C PTRFLS I 2 C PTRCON I****************************************************************** I* PROCESSING_MODE, QUEUE_PROCESSING_MODE VALUES: I* I* CM_BLOCKING -- VALUE 0 (BLOCK) I* CM_NON_BLOCKING -- VALUE 1 (NBLOCK) I* I 0 C BLOCK I 1 C NBLOCK I****************************************************************** I* RECEIVE_TYPE, EXPEDITED_RECEIVE_TYPE VALUES: I* I* CM_RECEIVE_AND_WAIT -- VALUE 0 (RCVWAT) I* CM_RECEIVE_IMMEDIATE -- VALUE 1 (RCVIMM) I* I 0 C RCVWAT I 1 C RCVIMM I****************************************************************** I* RETURN_CODE, CONVERSATION_RETURN_CODE VALUES: I* I* CM_OK -- VALUE 0 (CMOK) I* CM_ALLOCATE_FAILURE_NO_RETRY -- VALUE 1 (ALFLNR) I* CM_ALLOCATE_FAILURE_RETRY -- VALUE 2 (ALFLRE) I* CM_CONVERSATION_TYPE_MISMATCH -- VALUE 3 (CNVMIS) I* CM_PIP_NOT_SPECIFIED_CORRECTLY -- VALUE 5 (PIPNSC) I* CM_SECURITY_NOT_VALID -- VALUE 6 (SECNVL) I* CM_SYNC_LVL_NOT_SUPPORTED_LU -- VALUE 7 (SLNSLU) I* CM_SYNC_LVL_NOT_SUPPORTED_SYS -- VALUE 7 (SLNSSY) I* CM_SYNC_LVL_NOT_SUPPORTED_PGM -- VALUE 8 (SLNSP) I* CM_TPN_NOT_RECOGNIZED -- VALUE 9 (TPNAME) I* CM_TP_NOT_AVAILABLE_NO_RETRY -- VALUE 10 (TPNORE) I* CM_TP_NOT_AVAILABLE_RETRY -- VALUE 11 (TPRET) I* CM_DEALLOCATED_ABEND -- VALUE 17 (DEABND) I* CM_DEALLOCATED_NORMAL -- VALUE 18 (DENORM) I* CM_PARAMETER_ERROR -- VALUE 19 (PARERR) I* CM_PRODUCT_SPECIFIC_ERROR -- VALUE 20 (PRODER) I* CM_PROGRAM_ERROR_NO_TRUNC -- VALUE 21 (PENOTR) I* CM_PROGRAM_ERROR_PURGING -- VALUE 22 (PEPURG) I* CM_PROGRAM_ERROR_TRUNC -- VALUE 23 (PETRNC) I* CM_PROGRAM_PARAMETER_CHECK -- VALUE 24 (PEPCHK) I* CM_PROGRAM_STATE_CHECK -- VALUE 25 (STACHK) I* CM_RESOURCE_FAILURE_NO_RETRY -- VALUE 26 (RFNORE) I* CM_RESOURCE_FAILURE_RETRY -- VALUE 27 (RFRET) I* CM_UNSUCCESSFUL -- VALUE 28 (UNSUCC) I* CM_DEALLOCATED_ABEND_SVC -- VALUE 30 (DABSVC) I* CM_DEALLOCATED_ABEND_TIMER -- VALUE 31 (DABTIM) I* CM_SVC_ERROR_NO_TRUNC -- VALUE 32 (SVCENT) I* CM_SVC_ERROR_PURGING -- VALUE 33 (SVCEP) I* CM_SVC_ERROR_TRUNC -- VALUE 34 (SVCET) I* CM_OPERATION_INCOMPLETE -- VALUE 35 (OPINC) I* CM_SYSTEM_EVENT -- VALUE 36 (SYSEVT) I* CM_OPERATION_NOT_ACCEPTED -- VALUE 37 (OPNACC) I* CM_CONVERSATION_ENDING -- VALUE 38 (CONVEN) I* CM_SEND_RCV_MODE_NOT_SUPPORTED -- VALUE 39 (SRMNS) I* CM_BUFFER_TOO_SMALL -- VALUE 40 (SMLBUF) I* CM_EXP_DATA_NOT_SUPPORTED -- VALUE 41 (EDNS) I* CM_DEALLOC_CONFIRM_REJECT -- VALUE 42 (DECORJ) I* CM_ALLOCATION_ERROR -- VALUE 43 (ALLERR) I* CM_RETRY_LIMIT_EXCEEDED -- VALUE 44 (RETLIM) I* CM_NO_SECONDARY_INFORMATION -- VALUE 45 (NSINFO) I* CM_SECURITY_NOT_SUPPORTED -- VALUE 46 (SECNSP) I* CM_SECURITY_MUTUAL_FAILED -- VALUE 47 (SECMFL) I* CM_CALL_NOT_SUPPORTED -- VALUE 48 (CALLNS) I* CM_PARM_VALUE_NOT_SUPPORTED -- VALUE 49 (PARMNS) I* CM_TAKE_BACKOUT -- VALUE 100 (TAKEBO) I* CM_DEALLOCATED_ABEND_BO -- VALUE 130 (DABBO) I* CM_DEALLOCATED_ABEND_SVC_BO -- VALUE 131 (DABSBO) I* CM_DEALLOCATED_ABEND_TIMER_BO -- VALUE 132 (DABTBO) I* CM_RESOURCE_FAIL_NO_RETRY_BO -- VALUE 133 (RFNRBO) I* CM_RESOURCE_FAILURE_RETRY_BO -- VALUE 134 (RFRBO) I* CM_DEALLOCATED_NORMAL_BO -- VALUE 135 (DNORBO) I* CM_CONV_DEALLOC_AFTER_SYNCPT -- VALUE 136 (CDASP) I* CM_INCLUDE_PARTNER_REJECT_BO -- VALUE 137 (INPRBO) I* I 0 C CMOK I 1 C ALFLNR I 2 C ALFLRE I 3 C CNVMIS I 5 C PIPNSC I 6 C SECNVL I 7 C SLNSLU I 7 C SLNSSY I 8 C SLNSP I 9 C TPNAME I 10 C TPNORE I 11 C TPRET I 17 C DEABND I 18 C DENORM I 19 C PARERR I 20 C PRODER I 21 C PENOTR I 22 C PEPURG I 23 C PETRNC I 24 C PEPCHK I 25 C STACHK I 26 C RFNORE I 27 C RFRET I 28 C UNSUCC I 30 C DABSVC I 31 C DABTIM I 32 C SVCENT I 33 C SVCEP I 34 C SVCET I 35 C OPINC I 36 C SSEVT I 37 C OPNACC I 38 C CONVEN I 39 C SRMNS I 40 C SMLBUF I 41 C EDNS I 42 C DECORJ I 43 C ALLERR I 44 C RETLIM I 45 C NSINFO I 46 C SECNSP I 47 C SECMFL I 48 C CALLNS I 49 C PARMNS I 100 C TAKEBO I 130 C DABBO I 131 C DABSBO I 132 C DABTBO I 133 C RFNRBO I 134 C RFRBO I 135 C DNORBO I 136 C CDASP I 137 C INPRBO I****************************************************************** I* RETURN_CONTROL VALUES: I* I* CM_WHEN_SESSION_ALLOCATED -- VALUE 0 (SESALL) I* CM_IMMEDIATE -- VALUE 1 (IMMED) I* I 0 C SESALL I 1 C IMMED I****************************************************************** I* SEND_RECEIVE_MODE VALUES: I* I* CM_HALF_DUPLEX -- VALUE 0 (HDX) I* CM_FULL_DUPLEX -- VALUE 1 (FDX) I* I 0 C HDX I 1 C FDX I****************************************************************** I* SEND_TYPE VALUES: I* I* CM_BUFFER_DATA -- VALUE 0 (BUFDAT) I* CM_SEND_AND_FLUSH -- VALUE 1 (SNDFLS) I* CM_SEND_AND_CONFIRM -- VALUE 2 (SNDCNF) I* CM_SEND_AND_PREP_TO_RECEIVE -- VALUE 3 (SNDPTR) I* CM_SEND_AND_DEALLOCATE -- VALUE 4 (SNDDEL) I* I 0 C BUFDAT I 1 C SNDFLS I 2 C SNDCNF I 3 C SNDPTR I 4 C SNDDEL I****************************************************************** I* STATUS_RECEIVED VALUES: I* I* CM_NO_STATUS_RECEIVED -- VALUE 0 (NOSTAT) I* CM_SEND_RECEIVED -- VALUE 1 (SNDREC) I* CM_CONFIRM_RECEIVED -- VALUE 2 (CONRCV) I* CM_CONFIRM_SEND_RECEIVED -- VALUE 3 (CONSND) I* CM_CONFIRM_DEALLOC_RECEIVED -- VALUE 4 (CONDEL) I* CM_TAKE_COMMIT -- VALUE 5 (TAKEC) I* CM_TAKE_COMMIT_SEND -- VALUE 6 (TAKECS) I* CM_TAKE_COMMIT_DEALLOCATE -- VALUE 7 (TAKECD) I* CM_TAKE_COMMIT_DATA_OK -- VALUE 8 (TAKDO) I* CM_TAKE_COMMIT_SEND_DATA_OK -- VALUE 9 (TAKSDO) I* CM_TAKE_COMMIT_DEALLOC_DATA_OK -- VALUE 10 (TAKDDO) I* CM_PREPARE_OK -- VALUE 11 (PREPOK) I* CM_JOIN_TRANSACTION -- VALUE 12 (JOINTR) I* I 0 C NOSTAT I 1 C SNDREC I 2 C CONRCV I 3 C CONSND I 4 C CONDEL I 5 C TAKEC I 6 C TAKECS I 7 C TAKECD I 8 C TAKDO I 9 C TAKSDO I 10 C TAKDDO I 11 C PREPOK I 12 C JOINTR I****************************************************************** I* SYNC_LEVEL VALUES: I* I* CM_NONE -- VALUE 0 (NONE) I* CM_CONFIRM -- VALUE 1 (CONFRM) I* CM_SYNC_POINT -- VALUE 2 (SYNCPT) I* CM_SYNC_POINT_NO_CONFIRM -- VALUE 3 (SYNCNC) I* I 0 C NONE I 1 C CONFRM I 2 C SYNCPT I 3 C SYNCNC I****************************************************************** I* TRANSACTION_CONTROL VALUES: I* I* CM_CHAINED_TRANSACTIONS -- VALUE 0 (CHAIN) I* CM_UNCHAINED_TRANSACTIONS -- VALUE 1 (UCHAIN) I* I 0 C CHAIN I 1 C UCHAIN I************************ END OF PSEUDONYMS *********************** ---------------------------------------------------------------------------------------------------------------------------------- Appendix F. CPI Communications 2.0 Conformance Classes The purpose of the CPI-C 2.0 conformance classes is to foster an orderly marketplace for CPI-C 2.0 implementation, purchase, and use. The conformance class definition assists the CPI-C implementer in deciding what to build, the CPI-C purchaser in knowing what to buy, and the CPI-C application builder in knowing what to use. Uses of the conformance class definition include the following: o Product announcements o Application requirements specifications o Procurement specifications o Conformance test suite development ----------- Definitions MANDATORY CONFORMANCE CLASS A function set that an implementation must support to conform to CPI-C. All of the function within the set must be implemented. OPTIONAL CONFORMANCE CLASS A function set that an implementation may support. To support an optional conformance class, an implementation must support all the function in the optional conformance class and in its prerequisite conformance classes. PREREQUISITE CONFORMANCE CLASS A conformance class required for support of another conformance class. ------------------------ Conformance Requirements To conform with CPI-C 2.0, an implementation must support the following: o The mandatory conformance class (conversations) o Either the LU 6.2 or the OSI TP conformance class, or both Additionally, an implementation may support any optional conformance class. Multi-Threading Support While CPI Communications does not provide multi-threading support, some implementations allow multi-threaded programs to issue CPI-C calls. It is assumed that an implementation that supports multi-threaded programs allows concurrent operations through the use of multiple program threads. See "Concurrent Operations" on page 1. ----------------------------- CPI-C 2.0 Conformance Classes CPI-C 2.0 conformance classes consist of a mandatory conformance class and a number of optional conformance classes. A conformance class may be a functional conformance class, consisting of function that may be supported by a CPI-C implementation, or a configuration conformance class, specifying how a CPI-C implementation may allow an installation to configure the available support. The conformance classes are listed here and described below. Functional conformance classes: o Conversations (mandatory) o LU 6.2 o OSI TP o Recoverable transactions o Unchained transactions o Conversation-level non-blocking o Queue-level non-blocking o Callback function o Server o Data conversion routines o Security o Distributed security o Full-duplex o Expedited data o Directory o Secondary information Configuration conformance class: o OSI TP addressing disable ----------------------------------------- Functional Conformance Class Descriptions For each conformance class, the following information is provided: o Brief description o Prerequisite conformance classes o Required calls o Whether support is mandatory or optional Additional details of the required support (characteristics, variables, and values) are included in the tables in "Conformance Class Details." Conversations Description: allows a program to start and end half-duplex conversations, to exchange data on those converations, to use confirmation, error notification, the attention mechanism (Request_To_Send), and the optimization calls (Flush, Prepare_To_Receive), and to modify and examine conversation or system characteristics. Prerequisites: none Required Starter Set calls: o CMACCP - Accept_Conversation o CMALLC - Allocate o CMDEAL - Deallocate o CMINIT - Initialize_Conversation o CMRCV - Receive o CMSEND - Send_Data Required Advanced Function calls: o CMCFM - Confirm o CMCFMD - Confirmed o CMECS - Extract_Conversation_State o CMECT - Extract_Conversation_Type o CMEMBS - Extract_Maximum_Buffer_Size o CMEMN - Extract_Mode_Name o CMESL - Extract_Sync_Level o CMFLUS - Flush o CMPTR - Prepare_To_Receive o CMRTS - Request_To_Send o CMSERR - Send_Error o CMSCT - Set_Conversation_Type o CMSDT - Set_Deallocate_Type o CMSF - Set_Fill o CMSLD - Set_Log_Data o CMSMN - Set_Mode_Name o CMSPTR - Set_Prepare_To_Receive_Type o CMSRT - Set_Receive_Type o CMSRC - Set_Return_Control o CMSST - Set_Send_Type o CMSSL - Set_Sync_Level Required sync_level values: - CM_NONE - CM_CONFIRM o CMSTPN - Set_TP_Name o CMTRTS - Test_Request_To_Send_Received Support: mandatory LU 6.2 Description: allows a program to use LU 6.2-specific services. Prerequisites: conversations Required calls: o CMEPLN - Extract_Partner_LU_Name o CMSED - Set_Error_Direction o CMSPLN - Set_Partner_LU_Name Support: optional. However, an implementation must support either this conformance class or the OSI TP conformance class. OSI TP Description: allows a program to use OSI TP-specific services. Prerequisites: conversations Required calls: o CMEAEQ - Extract_AE_Qualifier o CMEAPT - Extract_AP_Title o CMEACN - Extract_Application_Context_Name o CMEID - Extract_Initialization_Data o CMSAC - Set_Allocate_Confirm o CMSAEQ - Set_AE_Qualifier o CMSAPT - Set_AP_Title o CMSACN - Set_Application_Context_Name o CMSCU - Set_Confirmation_Urgency o CMSID - Set_Initialization_Data Support: optional. However, an implementation must support either this conformance class or the LU 6.2 conformance class. Recoverable Transactions Description: allows a program to use CPI-C in conjunction with a resource recovery interface to coordinate changes to distributed resources using two-phase commit protocols. Prerequisites: conversations Required calls: o CMSSL - Set_Sync_Level Required sync_level value: - CM_SYNC_POINT Required sync_level value if either full duplex or OSI TP is also supported: - CM_SYNC_POINT_NO_CONFIRM Required calls if OSI TP is also supported: o CMDFDE - Deferred_Deallocate o CMPREP - Prepare o CMSPDP - Set_Prepare_Data_Permitted Support: optional Unchained Transactions Description: allows a program to complete a recoverable transaction with a commit call without immediately starting a new recoverable transaction. The program may begin a new recoverable transaction at a later time. Prerequisites: conversations, recoverable transactions, OSI TP Required calls: o CMETC - Extract_Transaction_Control o CMINCL - Include_Partner_In_Transaction o CMSBT - Set_Begin_Transaction o CMSTC - Set_Transaction_Control Support: optional Conversation-Level Non-Blocking Description: allows a program to regain control if a call cannot complete immediately. The call remains in progress. A program can have one outstanding operation on a conversation. Prerequisites: conversations Required calls: o CMCANC - Cancel_Conversation o CMSPM - Set_Processing_Mode o CMWAIT - Wait_For_Conversation Support: optional Queue-Level Non-Blocking Description: allows a program to regain control if a call cannot complete immediately. The call remains in progress. A program can have one outstanding operation per conversation queue. Prerequisites: conversations Required calls: o CMCANC - Cancel_Conversation o CMSQPM - Set_Queue_Processing_Mode o CMWCMP - Wait_For_Completion Support: optional Callback Function Description: allows a program to regain control if a call cannot complete immediately. The call remains in progress. A program can have one outstanding operation per conversation queue. A program receives an asynchronous notification when an outstanding operation completes. Prerequisites: conversations Required calls: o CMCANC - Cancel_Conversation o CMSQCF - Set_Queue_Callback_Function Support: optional Server Description: allows a program to register multiple TP names with CPI-C, to accept multiple incoming conversations, and to manage contexts for different clients. Prerequisites: conversations. Additionally, for a system that does not support multi-threaded programs: one or more of conversation-level non-blocking, queue-level non-blocking, or callback function. Required calls: o CMACCI - Accept_Incoming o CMECTX - Extract_Conversation_Context o CMETPN - Extract_TP_Name o CMINIC - Initialize_For_Incoming o CMRLTP - Release_Local_TP_Name o CMSLTP - Specify_Local_TP_Name Support: optional Data Conversion Routines Description: allows a program to call local routines to change the encoding of a character string from the local encoding to EBCDIC, or vice versa. Prerequisites: conversations Required calls: o CMCNVI - Convert_Incoming o CMCNVO - Convert_Outgoing Support: optional Security Description: allows a program to establish conversations that use access security information provided administratively in side information or set directly by the program. Prerequisites: conversations Required calls: o CMESUI - Extract_Security_User_ID o CMSCSP - Set_Conversation_Security_Password o CMSCST - Set_Conversation_Security_Type Required conversation_security_type values: - CM_SECURITY_NONE - CM_SECURITY_PROGRAM - CM_SECURITY_PROGRAM_STRONG - CM_SECURITY_SAME o CMSCSU Set_Conversation_Security_User_ID Support: optional Distributed Security Description: allows a program to use security services provided by a distributed security server. Prerequisites: conversations, directory Required calls: o CMESUI - Extract_Security_User_ID o CMSCST - Set_Conversation_Security_Type Required conversation_security_type values: - CM_SECURITY_NONE - CM_SECURITY_SAME - CM_SECURITY_DISTRIBUTED - CM_SECURITY_MUTUAL Support: optional Full-Duplex Description: allows a program to use full-duplex conversations. Prerequisites: conversations. Additionally, for a system that does not support multi-threaded programs: either queue-level non-blocking or callback function. Required calls: o CMESRM - Extract_Send_Receive_Mode o CMSSRM - Set_Send_Receive_Mode Support: optional Expedited Data Description: allows a program to exchange expedited data with the partner program. Prerequisites: conversations, LU 6.2 Required calls: o CMRCVX - Receive_Expedited_Data o CMSNDX - Send_Expedited_Data Support: optional Directory Description: allows a program to use destination information stored in a distributed directory. Prerequisites: conversations Required calls: o CMEPID - Extract_Partner_ID o CMSPID - Set_Partner_ID Support: optional Secondary Information Description: allows a program to extract secondary information associated with Prerequisites: conversations Required calls: o CMESI - Extract_Secondary_Information Support: optional ------------------------------------------- Configuration Conformance Class Description Configuration conformance classes specify configuration options that an implementation may support. This section describes the configuration conformance class. The following information is provided: o Brief description o Prerequisite conformance classes o Required configuration options o Whether support is mandatory or optional OSI TP Addressing Disable Description: an installation may disable the addressing Set calls for OSI TP. A program that issues a disabled call gets the CM_CALL_NOT_SUPPORTED return code. Prerequisites: conversations, OSI TP Calls that may be disabled: o CMSAEQ - Set_AE_Qualifier o CMSAPT - Set_AP_Title o CMSACN - Set_Application_Context_Name Support: optional ----------------------------------------------------------- Relationship to OSI TP Functional Units and OSI TP Profiles Table 81 shows the OSI TP service functional units and the corresponding CPI-C 2.0 conformance classes. For each functional unit, the calls in the corresponding conformance classes map to the services defined by the functional unit. For the Commit, Chained Transactions, and Unchained Transactions functional units, support for a resource recovery interface is also required. +--------------------------------------------------------------------------------------------------------------------------------+ | Table 81. OSI TP Service Functional Units and Corresponding Conformance Classes | +----------------------------------------------------------------+---------------------------------------------------------------+ | SERVICE FUNCTIONAL UNIT | CONFORMANCE CLASSES | +----------------------------------------------------------------+---------------------------------------------------------------+ | Dialogue | conversations, OSI TP | +----------------------------------------------------------------+---------------------------------------------------------------+ | Shared Control | full-duplex | +----------------------------------------------------------------+---------------------------------------------------------------+ | Polarized Control | conversations | +----------------------------------------------------------------+---------------------------------------------------------------+ | Handshake | conversations | +----------------------------------------------------------------+---------------------------------------------------------------+ | Commit | recoverable transactions | +----------------------------------------------------------------+---------------------------------------------------------------+ | Chained Transactions | recoverable transactions | +----------------------------------------------------------------+---------------------------------------------------------------+ | Unchained Transactions | unchained transactions | +----------------------------------------------------------------+---------------------------------------------------------------+ Table 82 shows the OSI TP profiles defined by the OSI Implementers Workshop and the corresponding CPI-C 2.0 conformance classes. For each profile, the calls in the corresponding conformance classes map to the services defined by the profile. The protocol functional units included in each profile are shown (in parentheses). For the Commit, Chained Transactions, Unchained Transactions, and Recovery functional units, support for a resource recovery interface is also required. NOTE: Profiles ATP12, ATP22, and ATP32 specify that the handshake functional unit is optional. CPI-C does not support the use of Confirm/Confirmed (handshake) on a full duplex conversation. +--------------------------------------------------------------------------------------------------------------------------------+ | Table 82. OSI TP Profiles and Corresponding Conformance Classes | +----------------------------------------------------------------+---------------------------------------------------------------+ | PROFILE (PROTOCOL FUNCTIONAL UNITS) | CONFORMANCE CLASSES | +----------------------------------------------------------------+---------------------------------------------------------------+ | ATP11 (dialogue, handshake, polarized control) | conversations, OSI TP | +----------------------------------------------------------------+---------------------------------------------------------------+ | ATP21 (dialogue, handshake, polarized control, commit, | conversations, OSI TP, recoverable transactions, | | unchained transactions, recovery) | unchained transactions | +----------------------------------------------------------------+---------------------------------------------------------------+ | ATP31 (dialogue, handshake, polarized control, commit, | conversations, OSI TP, recoverable transactions | | chained transactions, recovery) | | +----------------------------------------------------------------+---------------------------------------------------------------+ | ATP12 (dialogue, handshake (optional), shared control) | conversations, OSI TP, full-duplex | +----------------------------------------------------------------+---------------------------------------------------------------+ | ATP22 (dialogue, handshake (optional), shared control, commit, | conversations, OSI TP, full-duplex, | | unchained transactions, recovery) | recoverable transactions, unchained transactions | +----------------------------------------------------------------+---------------------------------------------------------------+ | ATP32 (dialogue, handshake (optional), shared control, commit, | conversations, OSI TP, full-duplex, | | chained transactions, recovery) | recoverable transactions | +----------------------------------------------------------------+---------------------------------------------------------------+ ------------------------- Conformance Class Details This section provides additional information on the required support for each functional conformance class. The tables below list each CPI-C call, characteristic, variable, and value in the left column; any conformance class or combination of conformance classes that requires the implementation of that call, characteristic, variable, or value is listed in the right column. Combinations are enclosed in parentheses. For example, (OSI TP and recoverable transactions) to the right of the Deferred_Deallocate call indicates that the call is required if both the OSI TP and recoverable transactions conformance classes are supported. The conformance class requirements for calls are presented in Table 83, and the conformance class requirements for characteristics, variables, and values are presented in Table 84. +--------------------------------------------------------------------------------------------------------------------------------+ | Table 83. Conformance Class Requirements -- Calls | +----------------------------------------------------------------+---------------------------------------------------------------+ | CALL | REQUIRED BY | +----------------------------------------------------------------+---------------------------------------------------------------+ | CMACCP -- Accept_Conversation | conversations | +----------------------------------------------------------------+---------------------------------------------------------------+ | CMACCI -- Accept_Incoming | server | +----------------------------------------------------------------+---------------------------------------------------------------+ | CMALLC -- Allocate | conversations | +----------------------------------------------------------------+---------------------------------------------------------------+ | CMCANC -- Cancel_Conversation | conversation-level non-blocking, callback function, | | | queue-level non-blocking | +----------------------------------------------------------------+---------------------------------------------------------------+ | CMCFM -- Confirm | conversations | +----------------------------------------------------------------+---------------------------------------------------------------+ | CMCFMD -- Confirmed | conversations | +----------------------------------------------------------------+---------------------------------------------------------------+ | CMCNVI -- Convert_Incoming | data conversion routines | +----------------------------------------------------------------+---------------------------------------------------------------+ | CMCNVO -- Convert_Outgoing | data conversion routines | +----------------------------------------------------------------+---------------------------------------------------------------+ | CMDEAL -- Deallocate | conversations | +----------------------------------------------------------------+---------------------------------------------------------------+ | CMDFDE -- Deferred_Deallocate | (OSI TP and recoverable transactions) | +----------------------------------------------------------------+---------------------------------------------------------------+ | CMEAEQ -- Extract_AE_Qualifier | OSI TP | +----------------------------------------------------------------+---------------------------------------------------------------+ | CMEAPT -- Extract_AP_Title | OSI TP | +----------------------------------------------------------------+---------------------------------------------------------------+ | CMEACN -- Extract_Application_Context_Name | OSI TP | +----------------------------------------------------------------+---------------------------------------------------------------+ | CMECTX -- Extract_Conversation_Context | server | +----------------------------------------------------------------+---------------------------------------------------------------+ | CMECS -- Extract_Conversation_State | conversations | +----------------------------------------------------------------+---------------------------------------------------------------+ | CMECT -- Extract_Conversation_Type | conversations | +----------------------------------------------------------------+---------------------------------------------------------------+ | CMEID -- Extract_Initialization_Data | OSI TP | +----------------------------------------------------------------+---------------------------------------------------------------+ | CMEMBS -- Extract_Maximum_Buffer_Size | conversations | +----------------------------------------------------------------+---------------------------------------------------------------+ | CMEMN -- Extract_Mode_Name | conversations | +----------------------------------------------------------------+---------------------------------------------------------------+ | CMEPB -- Extract_Partner_ID | directory | +----------------------------------------------------------------+---------------------------------------------------------------+ | CMEPLN -- Extract_Partner_LU_Name | LU 6.2 | +----------------------------------------------------------------+---------------------------------------------------------------+ | CMESRM -- Extract_Secondary_Information | secondary information | +----------------------------------------------------------------+---------------------------------------------------------------+ | CMESUI -- Extract_Security_User_ID | security, distributed security | +----------------------------------------------------------------+---------------------------------------------------------------+ | CMESRM -- Extract_Send_Receive_Mode | full-duplex | +----------------------------------------------------------------+---------------------------------------------------------------+ | CMESL -- Extract_Sync_Level | conversations | +----------------------------------------------------------------+---------------------------------------------------------------+ | CMETPN -- Extract_TP_Name | conversations | +----------------------------------------------------------------+---------------------------------------------------------------+ | CMETC -- Extract_Transaction_Control | unchained transactions | +----------------------------------------------------------------+---------------------------------------------------------------+ | CMFLUS -- Flush | conversations | +----------------------------------------------------------------+---------------------------------------------------------------+ | CMINCL -- Include_Partner_In_Transaction | unchained transactions | +----------------------------------------------------------------+---------------------------------------------------------------+ | CMINIC -- Initialize_For_Incoming | server | +----------------------------------------------------------------+---------------------------------------------------------------+ | CMINIT -- Initialize_Conversation | conversations | +----------------------------------------------------------------+---------------------------------------------------------------+ | CMPREP -- Prepare | (OSI TP and recoverable transactions) | +----------------------------------------------------------------+---------------------------------------------------------------+ | CMPTR -- Prepare_To_Receive | conversations | +----------------------------------------------------------------+---------------------------------------------------------------+ | CMRCV -- Receive | conversations | +----------------------------------------------------------------+---------------------------------------------------------------+ | CMRCVX -- Receive_Expedited_Data | expedited data | +----------------------------------------------------------------+---------------------------------------------------------------+ | CMRLTP -- Release_Local_TP_Name | server | +----------------------------------------------------------------+---------------------------------------------------------------+ | CMRTS -- Request_To_Send | conversations | +----------------------------------------------------------------+---------------------------------------------------------------+ | CMSEND -- Send_Data | conversations | +----------------------------------------------------------------+---------------------------------------------------------------+ | CMSERR -- Send_Error | conversations | +----------------------------------------------------------------+---------------------------------------------------------------+ | CMSNDX -- Send_Expedited_Data | expedited data | +----------------------------------------------------------------+---------------------------------------------------------------+ | CMSAEQ -- Set_AE_Qualifier | OSI TP | +----------------------------------------------------------------+---------------------------------------------------------------+ | CMSAC -- Set_Allocate_Confirm | OSI TP | +----------------------------------------------------------------+---------------------------------------------------------------+ | CMSAPT -- Set_AP_Title | OSI TP | +----------------------------------------------------------------+---------------------------------------------------------------+ | CMSACN -- Set_Application_Context_Name | OSI TP | +----------------------------------------------------------------+---------------------------------------------------------------+ | CMSBT -- Set_Begin_Transaction | unchained transactions | +----------------------------------------------------------------+---------------------------------------------------------------+ | CMSCU -- Set_Confirmation_Urgency | OSI TP | +----------------------------------------------------------------+---------------------------------------------------------------+ | CMSCSP -- Set_Conversation_Security_Password | security | +----------------------------------------------------------------+---------------------------------------------------------------+ | CMSCST -- Set_Conversation_Security_Type | security, distributed security | +----------------------------------------------------------------+---------------------------------------------------------------+ | CMSCSU -- Set_Conversation_Security_User_ID | security | +----------------------------------------------------------------+---------------------------------------------------------------+ | CMSCT -- Set_Conversation_Type | conversations | +----------------------------------------------------------------+---------------------------------------------------------------+ | CMSDT -- Set_Deallocate_Type | conversations | +----------------------------------------------------------------+---------------------------------------------------------------+ | CMSED -- Set_Error_Direction | LU 6.2 | +----------------------------------------------------------------+---------------------------------------------------------------+ | CMSF -- Set_Fill | conversations | +----------------------------------------------------------------+---------------------------------------------------------------+ | CMSID -- Set_Initialization_Data | OSI TP | +----------------------------------------------------------------+---------------------------------------------------------------+ | CMSLD -- Set_Log_Data | conversations | +----------------------------------------------------------------+---------------------------------------------------------------+ | CMSMN -- Set_Mode_Name | conversations | +----------------------------------------------------------------+---------------------------------------------------------------+ | CMSPID -- Set_Partner_ID | directory | +----------------------------------------------------------------+---------------------------------------------------------------+ | CMSPLN -- Set_Partner_LU_Name | LU 6.2 | +----------------------------------------------------------------+---------------------------------------------------------------+ | CMSPDP -- Set_Prepare_Data_Permitted | (OSI TP and recoverable transactions) | +----------------------------------------------------------------+---------------------------------------------------------------+ | CMSPTR -- Set_Prepare_to_Receive_Type | conversations | +----------------------------------------------------------------+---------------------------------------------------------------+ | CMSPM -- Set_Processing_Mode | conversation-level non-blocking | +----------------------------------------------------------------+---------------------------------------------------------------+ | CMSQCF -- Set_Queue_Callback_Function | callback function | +----------------------------------------------------------------+---------------------------------------------------------------+ | CMSQPM -- Set_Queue_Processing_Mode | queue-level non-blocking | +----------------------------------------------------------------+---------------------------------------------------------------+ | CMSRT -- Set_Receive_Type | conversations | +----------------------------------------------------------------+---------------------------------------------------------------+ | CMSRC -- Set_Return_Control | conversations | +----------------------------------------------------------------+---------------------------------------------------------------+ | CMSSRM -- Set_Send_Receive_Mode | full-duplex | +----------------------------------------------------------------+---------------------------------------------------------------+ | CMSST -- Set_Send_Type | conversations | +----------------------------------------------------------------+---------------------------------------------------------------+ | CMSSL -- Set_Sync_Level | conversations | +----------------------------------------------------------------+---------------------------------------------------------------+ | CMSTPN -- Set_TP_Name | conversations | +----------------------------------------------------------------+---------------------------------------------------------------+ | CMSTC -- Set_Transaction_Control | unchained transactions | +----------------------------------------------------------------+---------------------------------------------------------------+ | CMSLTP -- Specify_Local_TP_Name | server | +----------------------------------------------------------------+---------------------------------------------------------------+ | CMTRTS -- Test_Request_To_Send_Received | conversations | +----------------------------------------------------------------+---------------------------------------------------------------+ | CMWCMP -- Wait_For_Completion | queue-level non-blocking | +----------------------------------------------------------------+---------------------------------------------------------------+ | CMWAIT -- Wait_For_Conversation | conversation-level non-blocking | +----------------------------------------------------------------+---------------------------------------------------------------+ +--------------------------------------------------------------------------------------------------------------------------------+ | Table 84. Conformance Class Requirements -- Characteristics, Variables, and Values | +----------------------------------------------------------------+---------------------------------------------------------------+ | CHARACTERISTICS, VARIABLES, AND VALUES | REQUIRED BY | +----------------------------------------------------------------+---------------------------------------------------------------+ | ae_qualifier | OSI TP | +----------------------------------------------------------------+---------------------------------------------------------------+ | ae_qualifier_format | OSI TP | | cm_dn | OSI TP | | cm_oid | OSI TP | +----------------------------------------------------------------+---------------------------------------------------------------+ | ae_qualifier_length | OSI TP | +----------------------------------------------------------------+---------------------------------------------------------------+ | allocate_confirm | OSI TP | | cm_allocate_confirm | OSI TP | | cm_allocate_no_confirm | OSI TP | +----------------------------------------------------------------+---------------------------------------------------------------+ | ap_title | OSI TP | +----------------------------------------------------------------+---------------------------------------------------------------+ | ap_title_format | OSI TP | | cm_dn | OSI TP | | cm_oid | OSI TP | +----------------------------------------------------------------+---------------------------------------------------------------+ | ap_title_length | OSI TP | +----------------------------------------------------------------+---------------------------------------------------------------+ | application_context_name | OSI TP | +----------------------------------------------------------------+---------------------------------------------------------------+ | application_context_name_length | OSI TP | +----------------------------------------------------------------+---------------------------------------------------------------+ | begin_transaction | OSI TP | | cm_begin_explicit | OSI TP | | cm_begin_implicit | OSI TP | +----------------------------------------------------------------+---------------------------------------------------------------+ | buffer | conversations | +----------------------------------------------------------------+---------------------------------------------------------------+ | buffer_length | conversations | +----------------------------------------------------------------+---------------------------------------------------------------+ | callback_function | callback function | +----------------------------------------------------------------+---------------------------------------------------------------+ | callback_info | callback function | +----------------------------------------------------------------+---------------------------------------------------------------+ | call_ID | secondary information | | all call_ID values | secondary information | +----------------------------------------------------------------+---------------------------------------------------------------+ | completed_op_index_list | queue-level non-blocking | +----------------------------------------------------------------+---------------------------------------------------------------+ | completed_op_count | queue-level non-blocking | +----------------------------------------------------------------+---------------------------------------------------------------+ | confirmation_urgency | OSI TP | | cm_confirmation_not_urgent | OSI TP | | cm_confirmation_urgent | OSI TP | +----------------------------------------------------------------+---------------------------------------------------------------+ | context_ID | server | +----------------------------------------------------------------+---------------------------------------------------------------+ | context_ID_length | server | +----------------------------------------------------------------+---------------------------------------------------------------+ | control_information_received | conversations | | cm_no_control_info_received | conversations | | cm_req_to_send_received | conversations | | cm_exp_data_received | expedited data | | cm_rts_and_exp_data_received | expedited data | | cm_allocate_confirmed | OSI TP | | cm_allocate_confirmed_with_data | OSI TP | | cm_allocate_rejected_with_data | OSI TP | +----------------------------------------------------------------+---------------------------------------------------------------+ | conversation_ID | conversations | +----------------------------------------------------------------+---------------------------------------------------------------+ | conversation_queue | queue-level non-blocking, callback function | | cm_initialization_queue | queue-level non-blocking, callback function | | cm_send_queue | queue-level non-blocking, callback function | | cm_receive_queue | queue-level non-blocking, callback function | | cm_send_receive_queue | queue-level non-blocking, callback function | | cm_expedited_send_queue | queue-level non-blocking, callback function | | cm_expedited_receive_queue | queue-level non-blocking, callback function | +----------------------------------------------------------------+---------------------------------------------------------------+ | conversation_return_code | conversation-level non-blocking | | (same values as return_code) | | +----------------------------------------------------------------+---------------------------------------------------------------+ | conversation_security_type | security, distributed security | | cm_security_none | security, distributed security | | cm_security_same | security, distributed security | | cm_security_program | security | | cm_security_program_strong | security | | cm_security_distributed | distributed security | | cm_security_mutual | distributed security | +----------------------------------------------------------------+---------------------------------------------------------------+ | conversation_state | conversations | | cm_initialize_state | conversations | | cm_send_state | conversations | | cm_receive_state | conversations | | cm_send_pending_state | conversations | | cm_confirm_state | conversations | | cm_confirm_send_state | conversations | | cm_confirm_deallocate_state | conversations | | cm_defer_receive_state | recoverable transactions | | cm_defer_deallocate_state | recoverable transactions | | cm_sync_point_state | recoverable transactions | | cm_sync_point_send_state | recoverable transactions | | cm_sync_point_deallocate_state | recoverable transactions | | cm_initialize_incoming_state | server | | cm_prepared_state | recoverable transactions | | cm_send_only_state | full-duplex | | cm_receive_only_state | full-duplex | | cm_send_and_receive_state | full-duplex | +----------------------------------------------------------------+---------------------------------------------------------------+ | conversation_type | conversations | | cm_basic_conversation | conversations | | cm_mapped_conversation | conversations | +----------------------------------------------------------------+---------------------------------------------------------------+ | data_received | conversations | | cm_no_data_received | conversations | | cm_data_received | conversations | | cm_complete_data_received | conversations | | cm_incomplete_data_received | conversations | +----------------------------------------------------------------+---------------------------------------------------------------+ | deallocate_type | conversations | | cm_deallocate_sync_level | conversations | | cm_deallocate_flush | conversations | | cm_deallocate_confirm | conversations | | cm_deallocate_abend | conversations | +----------------------------------------------------------------+---------------------------------------------------------------+ | directory_encoding | directory | | cm_default_encoding | directory | | cm_unicode_encoding | directory | +----------------------------------------------------------------+---------------------------------------------------------------+ | directory_syntax | directory | | cm_default_syntax | directory | | cm_DCE_syntax | directory | | cm_XDS_syntax | directory | | cm_NDS_syntax | directory | +----------------------------------------------------------------+---------------------------------------------------------------+ | error_direction | LU 6.2 | | cm_receive_error | LU 6.2 | | cm_send_error | LU 6.2 | +----------------------------------------------------------------+---------------------------------------------------------------+ | expedited_receive_type | expedited data | | cm_receive_and_wait | expedited data | | cm_receive_immediate | expedited data | +----------------------------------------------------------------+---------------------------------------------------------------+ | fill | conversations | | cm_fill_ll | conversations | | cm_fill_buffer | conversations | +----------------------------------------------------------------+---------------------------------------------------------------+ | initialization_data | OSI TP | +----------------------------------------------------------------+---------------------------------------------------------------+ | initialization_data_length | OSI TP | +----------------------------------------------------------------+---------------------------------------------------------------+ | log_data | conversations | +----------------------------------------------------------------+---------------------------------------------------------------+ | log_data_length | conversations | +----------------------------------------------------------------+---------------------------------------------------------------+ | maximum_buffer_size | conversations | +----------------------------------------------------------------+---------------------------------------------------------------+ | mode_name | conversations | +----------------------------------------------------------------+---------------------------------------------------------------+ | mode_name_length | conversations | +----------------------------------------------------------------+---------------------------------------------------------------+ | OOID | queue-level non-blocking | +----------------------------------------------------------------+---------------------------------------------------------------+ | OOID_list | queue-level non-blocking | +----------------------------------------------------------------+---------------------------------------------------------------+ | OOID_list_count | queue-level non-blocking | | cm_all_outstanding_operations | queue-level non-blocking | | cm_all_outstanding_accepts | queue-level non-blocking | | cm_all_outstanding_receives | queue-level non-blocking | +----------------------------------------------------------------+---------------------------------------------------------------+ | partner_ID | directory | +----------------------------------------------------------------+---------------------------------------------------------------+ | partner_ID_length | directory | +----------------------------------------------------------------+---------------------------------------------------------------+ | partner_ID_scope | directory | | cm_explicit | directory | | cm_reference | directory | +----------------------------------------------------------------+---------------------------------------------------------------+ | partner_ID_type | directory | | cm_distinguished_name | directory | | cm_local_distinguished_name | directory | | cm_program_function_ID | directory | | cm_OSI_TPSU_title_OID | directory | | cm_program_binding | directory | +----------------------------------------------------------------+---------------------------------------------------------------+ | partner_LU_name | LU 6.2 | +----------------------------------------------------------------+---------------------------------------------------------------+ | partner_LU_name_length | LU 6.2 | +----------------------------------------------------------------+---------------------------------------------------------------+ | prepare_data_permitted | (OSI TP and recoverable transactions) | | cm_prepare_data_permitted | (OSI TP and recoverable transactions) | | cm_prepare_data_not_permitted | (OSI TP and recoverable transactions) | +----------------------------------------------------------------+---------------------------------------------------------------+ | prepare_to_receive_type | conversations | | cm_prep_to_receive_sync_level | conversations | | cm_prep_to_receive_flush | conversations | | cm_prep_to_receive_confirm | conversations | +----------------------------------------------------------------+---------------------------------------------------------------+ | processing_mode | conversation-level non-blocking | | cm_blocking | conversation-level non-blocking | | cm_non_blocking | conversation-level non-blocking | +----------------------------------------------------------------+---------------------------------------------------------------+ | queue_processing_mode | queue-level non-blocking | | cm_blocking | queue-level non-blocking | | cm_non_blocking | queue-level non-blocking | +----------------------------------------------------------------+---------------------------------------------------------------+ | receive_type | conversations | | cm_receive_and_wait | conversations | | cm_receive_immediate | conversations | +----------------------------------------------------------------+---------------------------------------------------------------+ | received_length | conversations | +----------------------------------------------------------------+---------------------------------------------------------------+ | requested_length | conversations | +----------------------------------------------------------------+---------------------------------------------------------------+ | return_code | conversations | | cm_ok | conversations | | cm_allocate_failure_no_retry | conversations | | cm_allocate_failure_retry | conversations | | cm_conversation_type_mismatch | LU 6.2 | | cm_pip_not_specified_correctly | LU 6.2 | | cm_security_not_valid | conversations | | cm_sync_lvl_not_supported_sys | conversations | | cm_sync_lvl_not_supported_pgm | LU 6.2 | | cm_tpn_not_recognized | conversations | | cm_tp_not_available_no_retry | conversations | | cm_tp_not_available_retry | conversations | | cm_deallocated_abend | conversations | | cm_deallocated_normal | conversations | | cm_parameter_error | conversations | | cm_product_specific_error | conversations | | cm_program_error_no_trunc | LU 6.2 | | cm_program_error_purging | conversations | | cm_program_error_trunc | LU 6.2 | | cm_program_parameter_check | conversations | | cm_program_state_check | conversations | | cm_resource_failure_no_retry | conversations | | cm_resource_failure_retry | conversations | | cm_unsuccessful | conversations | | cm_deallocated_abend_svc | LU 6.2 | | cm_deallocated_abend_timer | LU 6.2 | | cm_svc_error_no_trunc | LU 6.2 | | cm_svc_error_purging | LU 6.2 | | cm_svc_error_trunc | LU 6.2 | | cm_operation_incomplete | conversation-level non-blocking, callback function, | | | queue-level non-blocking | | cm_system_event | conversation-level non-blocking | | cm_operation_not_accepted | conversation-level non-blocking, callback function, | | | queue-level non-blocking | | cm_conversation_ending | full-duplex | | cm_send_rcv_mode_not_supported | OSI TP, full-duplex | | cm_buffer_too_small | expedited data, OSI TP, directory | | cm_exp_data_not_supported | expedited data | | cm_deallocate_confirm_reject | (OSI TP and full-duplex) | | cm_allocation_error | full-duplex | | cm_retry_limit_exceeded | directory | | cm_no_secondary_information | secondary information | | cm_security_not_supported | security, distributed security | | cm_security_mutual_failed | distributed security | | cm_call_not_supported | - | | cm_parm_value_not_supported | conversations, security, distributed security | | cm_take_backout | recoverable transactions | | cm_deallocated_abend_bo | recoverable transactions | | cm_deallocated_abend_svc_bo | (LU 6.2 and recoverable transactions) | | cm_deallocated_abend_timer_bo | (LU 6.2 and recoverable transactions) | | cm_resource_fail_no_retry_bo | recoverable transactions | | cm_resource_failure_retry_bo | recoverable transactions | | cm_deallocated_normal_bo | recoverable transactions | | cm_conv_dealloc_after_syncpt | (full-duplex, recoverable transactions and LU 6.2) | | cm_include_partner_reject_bo | unchained transactions | +----------------------------------------------------------------+---------------------------------------------------------------+ | return_control | conversations | | cm_when_session_allocated | conversations | | cm_immediate | conversations | +----------------------------------------------------------------+---------------------------------------------------------------+ | security_password | security | +----------------------------------------------------------------+---------------------------------------------------------------+ | security_password_length | security | +----------------------------------------------------------------+---------------------------------------------------------------+ | security_user_ID | security, distributed security | +----------------------------------------------------------------+---------------------------------------------------------------+ | security_user_ID_length | security, distributed security | +----------------------------------------------------------------+---------------------------------------------------------------+ | send_length | conversations | +----------------------------------------------------------------+---------------------------------------------------------------+ | send_receive_mode | full-duplex | | cm_full_duplex | full-duplex | | cm_half_duplex | full-duplex | +----------------------------------------------------------------+---------------------------------------------------------------+ | send_type | conversations | | cm_buffer_data | conversations | | cm_send_and_flush | conversations | | cm_send_and_confirm | conversations | | cm_send_and_prep_to_receive | conversations | | cm_send_and_deallocate | conversations | +----------------------------------------------------------------+---------------------------------------------------------------+ | status_received | conversations | | cm_no_status_received | conversations | | cm_send_received | conversations | | cm_confirm_received | conversations | | cm_confirm_send_received | conversations | | cm_confirm_dealloc_received | conversations | | cm_take_commit | recoverable transactions | | cm_take_commit_send | recoverable transactions | | cm_take_commit_deallocate | recoverable transactions | | cm_take_commit_data_permitted | (OSI TP and recoverable transactions) | | cm_take_commit_send_data_permitted | (OSI TP and recoverable transactions) | | cm_take_commit_deallocate_data_permitted | (OSI TP and recoverable transactions) | | cm_prepare_ok | recoverable transactions | | cm_join_transaction | unchained transactions | +----------------------------------------------------------------+---------------------------------------------------------------+ | sym_dest_name | conversations | +----------------------------------------------------------------+---------------------------------------------------------------+ | sync_level | conversations | | cm_none | conversations | | cm_confirm | conversations | | cm_sync_point | recoverable transactions | | cm_sync_point_no_confirm | (OSI TP and recoverable transactions), | | | (recoverable transactions and full-duplex) | +----------------------------------------------------------------+---------------------------------------------------------------+ | timeout | queue-level non-blocking | +----------------------------------------------------------------+---------------------------------------------------------------+ | TP_name | conversations | +----------------------------------------------------------------+---------------------------------------------------------------+ | TP_name_length | conversations | +----------------------------------------------------------------+---------------------------------------------------------------+ | transaction_control | unchained transactions | | cm_chained_transactions | unchained transactions | | cm_unchained_transactions | unchained transactions | +----------------------------------------------------------------+---------------------------------------------------------------+ | user_field | queue-level non-blocking, callback function | +----------------------------------------------------------------+---------------------------------------------------------------+ | user_field_list | queue-level non-blocking | +----------------------------------------------------------------+---------------------------------------------------------------+ ---------------------------------------------------------------------------------------------------------------------------------- Appendix G. Sample Programs This appendix contains the following sections: o "SALESRPT (Initiator of the Conversation)" The COBOL program SALESRPT establishes a conversation with its partner program, CREDRPT, in order to transfer a sales record for credit processing. After sending the sales record, SALESRPT waits for a reply from CREDRPT. o "CREDRPT (Acceptor of the Conversation)" After the conversation is started--thus causing CREDRPT to be loaded into memory and begin execution -- CREDRPT accepts the conversation and receives the credit record sent by SALESRPT. When CREDRPT has successfully received the record, it sends a message back to SALESRPT informing SALESRPT of this fact. o "Results of Successful Program Execution" This section shows the output generated by the "DISPLAY" statements in CREDRPT and SALESRPT upon successful execution of the programs. Both CREDRPT and SALESRPT use the various conversation characteristic values in the COBOL pseudonym file. They access the pseudonym file by executing the following command: COPY CMCOBOL. NOTE: These sample programs are provided for tutorial purposes only. A complete handling of error conditions has not been shown or attempted. The details of error handling will depend on the nature of actual applications. ---------------------------------------- SALESRPT (Initiator of the Conversation) IDENTIFICATION DIVISION. PROGRAM-ID. SALESRPT. ************************************************************* * THIS IS THE SALESRPT PROGRAM THAT SENDS DATA TO THE * * CREDRPT PROGRAM FOR CREDIT BALANCE PROCESSING. * * * * PURPOSE: SEND A SALES-RECORD TO THE CREDRPT PROGRAM FOR * * CREDIT BALANCE PROCESSING, THEN RECEIVE AND * * DISPLAY A STATUS INDICATION FROM CREDRPT. * * * * INPUT: PROCESSING-RESULTS-RECORD FROM CREDRPT. * * * * OUTPUT: SALES-RECORD TO THE CREDRPT PROGRAM. * * * * * * NOTE: SALES-RECORD PROCESSING HAS BEEN GREATLY * * SIMPLIFIED IN THIS EXAMPLE. * ************************************************************* * ENVIRONMENT DIVISION. CONFIGURATION SECTION. SOURCE-COMPUTER. IBM-370. OBJECT-COMPUTER. IBM-370. SPECIAL-NAMES. INPUT-OUTPUT SECTION. FILE-CONTROL. I-O-CONTROL. * DATA DIVISION. FILE SECTION. WORKING-STORAGE SECTION. 01 BUFFER PIC X(52) VALUE SPACES. 01 CM-ERROR-DISPLAY-MSG PIC X(40) VALUE SPACES. **************** * SALES-RECORD * **************** 01 SALES-RECORD. 05 CUST-NUM PIC X(4) VALUE "0010". 05 CUST-NAME PIC X(20) VALUE "XYZ INC.". 05 FILLER PIC X(5) VALUE SPACES. 05 CREDIT-BALANCE PIC S9(7)V99 VALUE 4275.50. 05 CREDIT-LIMIT PIC S9(7)V99 VALUE 5000. 05 CREDIT-FLAG PIC X VALUE "1". ***************************** * PROCESSING-RESULTS-RECORD * ***************************** 01 PROCESSING-RESULTS-RECORD PIC X(25) VALUE SPACES. ********************************************** * USE THE CPI-COMMUNICATIONS PSEUDONYM FILE * ********************************************** COPY CMCOBOL. LINKAGE SECTION. EJECT * PROCEDURE DIVISION. ****************************************************************** ************************** START OF MAINLINE ******************* ****************************************************************** MAINLINE. PERFORM APPC-INITIALIZE THRU APPC-INITIALIZE-EXIT. DISPLAY "SALESRPT CONVERSATION INITIALIZED". PERFORM APPC-ALLOCATE THRU APPC-ALLOCATE-EXIT. DISPLAY "SALESRPT CONVERSATION ALLOCATED". PERFORM APPC-SEND THRU APPC-SEND-EXIT. DISPLAY "SALESRPT DATA RECORD SENT". PERFORM APPC-RECEIVE THRU APPC-RECEIVE-EXIT UNTIL NOT CM-OK. DISPLAY "SALESRPT RESULTS RECORD RECEIVED". PERFORM CLEANUP THRU CLEANUP-EXIT. STOP RUN. ****************************************************************** *************************** END OF MAINLINE ******************** ****************************************************************** * APPC-INITIALIZE. MOVE "CREDRPT" TO SYM-DEST-NAME. **************************************************** ** ESTABLISH DEFAULT CONVERSATION CHARACTERISTICS ** **************************************************** CALL "CMINIT" USING CONVERSATION-ID SYM-DEST-NAME CM-RETCODE. IF CM-OK NEXT SENTENCE ELSE MOVE "INITIALIZATION PROCESSING TERMINATED" TO CM-ERROR-DISPLAY-MSG PERFORM CLEANUP THRU CLEANUP-EXIT. APPC-INITIALIZE-EXIT. EXIT. ***************************************************************** * APPC-ALLOCATE. ********************************** * ALLOCATE THE APPC CONVERSATION * ********************************** CALL "CMALLC" USING CONVERSATION-ID CM-RETCODE IF CM-OK NEXT SENTENCE ELSE MOVE "ALLOCATION PROCESSING TERMINATED" TO CM-ERROR-DISPLAY-MSG PERFORM CLEANUP THRU CLEANUP-EXIT. APPC-ALLOCATE-EXIT. EXIT. ***************************************************************** * APPC-SEND. MOVE SALES-RECORD TO BUFFER. MOVE 52 TO SEND-LENGTH. ************************************* * SEND THE SALES-RECORD DATA RECORD * ************************************* CALL "CMSEND" USING CONVERSATION-ID BUFFER SEND-LENGTH REQUEST-TO-SEND-RECEIVED CM-RETCODE. IF CM-OK NEXT SENTENCE ELSE MOVE "SEND PROCESSING TERMINATED" TO CM-ERROR-DISPLAY-MSG PERFORM CLEANUP THRU CLEANUP-EXIT. APPC-SEND-EXIT. EXIT. ***************************************************************** * APPC-RECEIVE. **************************************************** * PERFORM THIS CALL UNTIL A "NOT" CM-OK * * RETURN CODE IS RECEIVED. ALLOWING RECEPTION OF: * * - PROCESSING-RESULTS-RECORD FROM CREDRPT PROGRAM * * - CONVERSATION DEALLOCATION RETURN CODE * * FROM THE CREDRPT PROGRAM * **************************************************** MOVE 25 TO REQUESTED-LENGTH. CALL "CMRCV" USING CONVERSATION-ID BUFFER REQUESTED-LENGTH DATA-RECEIVED RECEIVED-LENGTH STATUS-RECEIVED REQUEST-TO-SEND-RECEIVED CM-RETCODE. * IF CM-COMPLETE-DATA-RECEIVED MOVE BUFFER TO PROCESSING-RESULTS-RECORD DISPLAY PROCESSING-RESULTS-RECORD END-IF. IF CM-OK OR CM-DEALLOCATED-NORMAL NEXT SENTENCE ELSE MOVE "RECEIVE PROCESSING TERMINATED" TO CM-ERROR-DISPLAY-MSG. APPC-RECEIVE-EXIT. EXIT. ***************************************************************** * CLEANUP. *********************************************** * DISPLAY EXECUTION COMPLETE OR ERROR MESSAGE * * NOTE: CREDRPT WILL DEALLOCATE CONVERSATION * *********************************************** IF CM-ERROR-DISPLAY-MSG = SPACES DISPLAY "PROGRAM: SALESRPT EXECUTION COMPLETE" ELSE DISPLAY "SALESRPT PROGRAM - ", CM-ERROR-DISPLAY-MSG, " RC= ", CM-RETCODE. STOP RUN. CLEANUP-EXIT. EXIT. ***************************************************************** -------------------------------------- CREDRPT (Acceptor of the Conversation) IDENTIFICATION DIVISION. PROGRAM-ID. CREDRPT. ************************************************************* * THIS IS THE CREDRPT PROGRAM THAT RECIEVES DATA FROM THE * * SALESRPT PROGRAM FOR CREDIT BALANCE PROCESSING. * * * * PURPOSE: RECEIVE A SALES-RECORD FROM THE SALESRPT PROGRAM * * AND COMPUTE AND DISPLAY A NEW CREDIT BALANCE, * * THEN SEND A STATUS INDICATION TO SALESRPT. * * * * INPUT: SALES-RECORD FROM SALESRPT PROGRAM. * * * * OUTPUT: DISPLAY OUTPUT-RECORD. * * PROCESSING-RESULTS-RECORD TO SALESRPT. * * * * NOTE: SALES-RECORD PROCESSING HAS BEEN GREATLY * * SIMPLIFIED IN THIS EXAMPLE. * ************************************************************* * ENVIRONMENT DIVISION. CONFIGURATION SECTION. SOURCE-COMPUTER. IBM-370. OBJECT-COMPUTER. IBM-370. SPECIAL-NAMES. INPUT-OUTPUT SECTION. FILE-CONTROL. I-O-CONTROL. * DATA DIVISION. FILE SECTION. WORKING-STORAGE SECTION. 01 CM-ERROR-DISPLAY-MSG PIC X(40) VALUE SPACES. 01 BUFFER PIC X(52). 01 CURRENT-CREDIT-BALANCE PIC S9(7)V99. 01 CONVERSATION-STATUS PIC 9(9) COMP-4. 88 CONVERSATION-ACCEPTED VALUE 1. 88 CONVERSATION-NOT-ESTABLISHED VALUE 0. **************** * SALES-RECORD * **************** 01 SALES-RECORD. 05 CUST-NUM PIC X(4). 05 CUST-NAME PIC X(20). 05 FILLER PIC X(5). 05 CREDIT-BALANCE PIC S9(7)V99. 05 CREDIT-LIMIT PIC S9(7)V99. 05 CREDIT-FLAG PIC X. ***************** * OUTPUT-RECORD * ***************** 01 OUTPUT-RECORD. 05 FILLER PIC X. 05 OP-CUST-NUM PIC X(4). 05 FILLER PIC X(3) VALUE SPACES. 05 OP-CUST-NAME PIC X(20). 05 FILLER PIC X(5) VALUE SPACES. 05 OP-CREDIT-LIMIT PIC Z(6)9.99-. 05 FILLER PIC X(5) VALUE SPACES. 05 OP-CREDIT-BALANCE PIC Z(6)9.99-. 05 FILLER PIC X(5) VALUE SPACES. 05 OP-TEXT-FIELD PIC X(25). 05 FILLER PIC X(5) VALUE SPACES. ***************************** * PROCESSING-RESULTS-RECORD * ***************************** 01 PROCESSING-RESULTS-RECORD PIC X(25) VALUE SPACES. ********************************************** * CPI-COMMUNICATIONS PSEUDONYM COPYBOOK FILE * ********************************************** COPY CMCOBOL. LINKAGE SECTION. EJECT * PROCEDURE DIVISION. ****************************************************************** ************************** START OF MAINLINE ******************* ****************************************************************** MAINLINE. PERFORM APPC-ACCEPT THRU APPC-ACCEPT-EXIT. DISPLAY "CREDRPT CONVERSATION ACCEPTED". PERFORM APPC-RECEIVE THRU APPC-RECEIVE-EXIT UNTIL CM-SEND-RECEIVED. DISPLAY "CREDRPT RECORD RECEIVED". PERFORM PROCESS-RECORD THRU PROCESS-RECORD-EXIT. DISPLAY "CREDRPT DATA PROCESSED". PERFORM APPC-SEND THRU APPC-SEND-EXIT. DISPLAY "CREDRPT RESULTS RECORD SENT". PERFORM CLEANUP THRU CLEANUP-EXIT. STOP RUN. ****************************************************************** *************************** END OF MAINLINE ******************** ****************************************************************** * APPC-ACCEPT. ************************************************** * ACCEPT INCOMING APPC CONVERSATION ESTABLISHING * * DEFAULT CONVERSATION CHARACTERISTICS * ************************************************** CALL "CMACCP" USING CONVERSATION-ID CM-RETCODE. IF CM-OK SET CONVERSATION-ACCEPTED TO TRUE ELSE MOVE "ACCEPT PROCESSING TERMINATED" TO CM-ERROR-DISPLAY-MSG PERFORM CLEANUP THRU CLEANUP-EXIT END-IF. APPC-ACCEPT-EXIT. EXIT. ***************************************************************** * APPC-RECEIVE. ************************************************************* * PERFORM THIS CALL UNTIL A CM-SEND-RECEIVE INDICATION IS * * RECEIVED. THIS INDICATES A CONVERSATION STATE CHANGE FROM * * RECEIVE TO SEND OR SEND-PENDING STATE, THUS "CMRCV" * * (RECEIVE) HAS COMPLETED. ALLOWING RECEPTION OF: * * - SALES-RECORD FROM SALESRPT PROGRAM * ************************************************************* MOVE 52 TO REQUESTED-LENGTH. CALL "CMRCV" USING CONVERSATION-ID BUFFER REQUESTED-LENGTH DATA-RECEIVED RECEIVED-LENGTH STATUS-RECEIVED REQUEST-TO-SEND-RECEIVED CM-RETCODE. * IF CM-COMPLETE-DATA-RECEIVED MOVE BUFFER TO SALES-RECORD END-IF. * IF CM-OK NEXT SENTENCE ELSE PERFORM APPC-SET-DEALLOCATE-TYPE THRU APPC-SET-DEALLOCATE-TYPE-EXIT MOVE "RECEIVE PROCESSING TERMINATED" TO CM-ERROR-DISPLAY-MSG PERFORM CLEANUP THRU CLEANUP-EXIT. APPC-RECEIVE-EXIT. EXIT. ***************************************************************** * PROCESS-RECORD. SUBTRACT CREDIT-BALANCE FROM CREDIT-LIMIT GIVING CURRENT-CREDIT-BALANCE. IF CREDIT-FLAG = "0" MOVE "**CREDIT LIMIT EXCEEDED**" TO OP-TEXT-FIELD ELSE MOVE SPACES TO OP-TEXT-FIELD END-IF. MOVE CUST-NUM TO OP-CUST-NUM. MOVE CUST-NAME TO OP-CUST-NAME. MOVE CREDIT-LIMIT TO OP-CREDIT-LIMIT. MOVE CURRENT-CREDIT-BALANCE TO OP-CREDIT-BALANCE. DISPLAY OUTPUT-RECORD. * MOVE "CREDIT RECORD UPDATED" TO PROCESSING-RESULTS-RECORD. PROCESS-RECORD-EXIT. EXIT. ***************************************************************** * APPC-SEND. MOVE PROCESSING-RESULTS-RECORD TO BUFFER. MOVE 25 TO SEND-LENGTH. ************************************************** * SEND THE PROCESSING-RESULTS-RECORD TO SALESRPT * ************************************************** CALL "CMSEND" USING CONVERSATION-ID BUFFER SEND-LENGTH REQUEST-TO-SEND-RECEIVED CM-RETCODE. IF CM-OK NEXT SENTENCE ELSE PERFORM APPC-SET-DEALLOCATE-TYPE THRU APPC-SET-DEALLOCATE-TYPE-EXIT MOVE "SEND PROCESSING TERMINATED" TO CM-ERROR-DISPLAY-MSG PERFORM CLEANUP THRU CLEANUP-EXIT. APPC-SEND-EXIT. EXIT. ***************************************************************** * APPC-SET-DEALLOCATE-TYPE. SET CM-DEALLOCATE-ABEND TO TRUE. ***************************************** * ON ERROR SET DEALLOCATE-TYPE TO ABEND * ***************************************** CALL "CMSDT" USING CONVERSATION-ID DEALLOCATE-TYPE CM-RETCODE. IF CM-OK NEXT SENTENCE ELSE DISPLAY "ERROR SETTING CONVERSATION DEALLOCATE TYPE". APPC-SET-DEALLOCATE-TYPE-EXIT. EXIT. ***************************************************************** * CLEANUP. IF CONVERSATION-ACCEPTED ******************************** * DEALLOCATE APPC CONVERSATION * ******************************** CALL "CMDEAL" USING CONVERSATION-ID CM-RETCODE DISPLAY "CREDRPT DEALLOCATED CONVERSATION" END-IF. IF CM-ERROR-DISPLAY-MSG = SPACES DISPLAY "PROGRAM: CREDRPT EXECUTION COMPLETE" ELSE DISPLAY "CREDRPT PROGRAM - ", CM-ERROR-DISPLAY-MSG, " RC= ", CM-RETCODE END-IF. STOP RUN. CLEANUP-EXIT. EXIT. ***************************************************************** --------------------------------------- Results of Successful Program Execution SALESRPT PROGRAM: SALESRPT CONVERSATION INTIALIZED SALESRPT CONVERSATION ALLOCATED SALESRPT DATA RECORD SENT SALESRPT RESULTS RECORD RECEIVED PROGRAM: SALESRPT EXECUTION COMPLETE CREDRPT PROGRAM: CREDRPT CONVERSATION ACCEPTED CREDRPT RECORD RECEIVED 0010 XYZ INC. 5000.00 724.50 CREDRPT DATA PROCESSED CREDRPT RESULTS RECORD SENT CREDRPT DEALLOCATED CONVERSATION PROGRAM: CREDRPT EXECUTION COMPLETE ---------------------------------------------------------------------------------------------------------------------------------- Appendix H. CPI Communications Extensions for Use with DCE Directory This appendix describes CPI Communications extensions in two areas: o Additional directory objects (beyond program installation object) to provide additional functionality. Three new objects are introduced to allow enhanced program use of the directory at a functional level equivalent to Distributed Computing Environment (DCE) Remote Procedure Call (RPC) use. The three new objects are: - PROFILE object, accessed by a profile distinguished name (PDN) - SERVER object, accessed by a server distinguished name (SDN) - SERVER GROUP object, accessed by a server group distinguished name (SGDN) o A CPI Communications-specific interface for interaction with the DCE directory, referred to here as the CPI-C name service interface (CNSI). The rest of this appendix describes the three new objects, the CNSI, and how they can be used to interact with CPI Communications. -------------- Profile Object The profile object enables the establishment of a search priority for all of the other directory objects. For example, a typical profile might define a primary server for first attempts in locating function, but also define a secondary server if the primary server is unable. The structure of the profile object is a list of profile elements, where each element contains three parts: o PFID--the program function identifier for the profile element. This field can be null if a default ordering for all function is desired. o Priority--the priority of the element relative to all other profile elements. o Distinguished Name (DN)--points to either a profile, server, server-group, or program-installation object. ------------- Server Object Conceptually, the server object represents a collection of programs and resources; examples are a single system or a file server on a LAN. The server object enables two key capabilities: 1. Location/search for a particular function. For example, is OfficeNetMail application available on this server? This function is provided by maintaining a list of (PFID, PIDN) pairs in the server object, where the PIDN is a DN for the program installation object that provides the function of the PFID. If a function is available from more than one program installation on the server, there are multiple (PFID, PIDN) pairs. 2. Location/search of a particular resource. For example, does the PAYROLL DATABASE reside on this server? This function is provided by maintaining a list of resources that are available on the server. ------------------- Server Group Object The server group object extends the concept of a server by allowing servers to be grouped. Grouping provides such additional value as transparent redundancy and the ability to specify equivalent servers. The server group object pointed to by an SGDN simply contains a list of server distinguished names (SDNs). -------------------------------- Interaction of Directory Objects Figure 28 shows a simple diagram of the different directory objects and their interactions. The arrows show the interconnection of information between different objects. SDN PIDN +-------------------------------+ +-------------------------------+ | Server Object | -->--------------------------------> | Program Installion Object | | - list of (PFID, PIDN) pairs | | - Progam Function (PFID) | | - list of available resources | <-------------+ | - Program Binding | +-------------------------------+ A +-------------------------------+ A | PDN A | +-------------------------------+ | | | Profile Object | -->---------+ | | - list of | | | (PFID, Priority, objDN)... | A +-------------------------------+ | SGDN | +-------------------------------+ V | Server Group Object |<--------------+ | - list of server objects | | (SDN, SDN, SDN ...) | +-------------------------------+ Figure 28. Interactions of Directory Objects Here is an example of how a program might use the objects: o The program specifies a profile object, a PFID, and a resource. o The profile object is accessed first to determine servers that have the requested function. By using the priority field, a prioritized list of relevant servers is obtained. o The first server object in the list is accessed. The resource list in the server object is then searched to determine if the server has the requested resource. If the resource is not found, the next server object in the list is accessed. o Once a server with the correct resource is located, the (PFID, PIDN) list is used to determine the DN for the program installation object. o The program installation object is accessed to obtain the program binding. ---------------------------- CPI-C Name Service Interface The objects described above reside in the distributed directory and are accessed by a directory interface. For example, programs using the DCE distributed directory can access directory objects using the X/OPEN Directory Services (XDS) and X/OPEN Object Management (XOM) programming interfaces. Because these interfaces are not specific to the CPI Communications directory objects, this Appendix describes a local service, referred to here as the CPI-C NAME SERVICE INTERFACE (CNSI), which programs can use to interact with CPI Communications directory objects in the directory. Figure 29 shows the interaction between the program, CPI-C, and CNSI. *---------------------------------------* | Application Program | *---------------------------------------* . A . . . . Input(PFID, . . Output | . Input(sym_dest_name, DN, . . (binding) . PIDN, PFID, binding) Resource) V . | V *-----------------------------* *----------------------------* | CPIC Name Service Interface| | | CPIC or APPC | *-----------------------------* *----------------------------* | V | PIDN or | | PFID + default DN *---------------------<-------* | | *------->---------------------> | binding | Figure 29. CPI-C Name Service Interface (CNSI) and CPI Communications The right side of the figure shows how a program makes calls to CPI Communications using the function described in Chapter 2, "CPI Communications Terms and Concepts." If the program specifies a sym_dest_name pointing to a DN, or a PFID or DN directly, CPI Communications accesses the distributed directory and acquires a program binding. CPI-C uses the program binding to establish a conversation with the partner program. When a PFID is specified, a default DN is used to begin the search. This default DN may be either a PDN, SDN, or SGDN. Definition of a default DN is system specific. The left side of Figure 29 shows how a program uses the CNSI and objects defined in this Appendix to locate the partner program. The application program makes a call to the CNSI and specifies a three-parameter search criteria: o PROGRAM FUNCTION ID--a PFID that represents the function the partner program provides. o PRIORITY/LOCATION--a DN representing either a profile, server, or server group object. o RESOURCE--a resource_ID identifying a particular resource (that is, a file that is required along with a particular function). CNSI Calls As previously discussed, the program uses CNSI calls to retrieve a PIDN, which it then passes to CPI-C using the Set_Partner_ID call. Although CNSI calls are not CPI Communications calls and, thus, not formally defined, the interface would look very much like DCE's NSI interface for RPC. Here is a sample listing of the type of calls that would be required to manipulate the objects. +--------------------------------------------------------------------+ | Table 85. Sample Calls for CNSI | +----------------------------------+---------------------------------+ +----------------------------------+---------------------------------+ | | | | cpic_ns_binding_export | cpic_ns_group_mbr_inq_done | | cpic_ns_binding_import_begin | cpic_ns_group_mbr_inq_next | | cpic_ns_binding_import_done | cpic_ns_group_mbr_remove | | cpic_ns_binding_import_next | cpic_ns_mgmt_binding_unexport | | cpic_ns_binding_inq_entry_name | cpic_ns_mgmt_entry_create | | cpic_ns_binding_lookup_begin | cpic_ns_mgmt_entry_delete | | cpic_ns_binding_lookup_done | cpic_ns_mgmt_entry_inq_if_ids | | cpic_ns_binding_lookup_next | cpic_ns_mgmt_handle_set_exp_age | | cpic_ns_binding_select | cpic_ns_mgmt_inq_exp_age | | cpic_ns_binding_unexport | cpic_ns_mgmt_set_exp_age | | cpic_ns_entry_expand_name | cpic_ns_profile_delete | | cpic_ns_entry_object_inq_begin | cpic_ns_profile_elt_add | | cpic_ns_entry_object_inq_done | cpic_ns_profile_elt_inq_begin | | cpic_ns_entry_object_inq_next | cpic_ns_profile_elt_inq_done | | cpic_ns_group_delete | cpic_ns_profile_elt_inq_next | | cpic_ns_group_mbr_add | cpic_ns_profile_elt_remove | | cpic_ns_group_mbr_inq_begin | cpic_ns_set_authn | | | | +----------------------------------+---------------------------------+ ------------------------- Definition of New Objects Three new objects are required: o Profile o Server o Server Group This section discusses terminology and then provides definitions for attributes in the new objects. Terminology The following terminology is used to define the new CNSI attributes: o A MULTI-VALUED attribute means the directory stores (and is aware of) multiple values for the attribute. o A SINGLE-VALUED attribute means the directory has only one value for the attribute. o A COMPLEX attribute means the directory is only aware of a single value for the attribute, but the single-value is encoded to contain multiple fields. A complex field follows the generic coding guidelines provided in Appendix A, "Variables and Characteristics" for the program binding. o A SIMPLE attribute means the attribute value is not encoded; that is, there is only one field. Profile Object The Profile object contains one attribute, a profile record attribute: o profile record (complex, multi-valued) A value for the profile record has three parts: priority, PFID, DN 1. priority is 2-character decimal digits (00=highest) 2. PFID is a program function identifier (as defined in Appendix A, "Variables and Characteristics") 3. DN is a distinguished name for one of the following: - Server object - Server group object - Profile object - Program installation object NOTE: The profile object has the unique object identifier of 1.3.18.0.2.6.8. The profile record attribute has the unique object identifier of 1.3.18.0.2.4.15. Server Object The Server object contains two attributes, a server record and resource record attribute: o Server record (complex, multi-valued) A value for the server record has two parts: PFID and DN. 1. PFID is a program function identifier. 2. DN is a distinguished name for a program installation object. o Resource record (simple, multi-valued) A value for the resource record is a customer-defined byte string with a maximum length of 64 bytes. NOTE: The server object has the unique object identifier of 1.3.18.0.2.6.9. The server record attribute has the unique object identifier of 1.3.18.0.2.4.16. The resource record attribute has the unique object identifier of 1.3.18.0.2.4.17. Server Group Object The Server Group object contains one attribute, a distinguished name attribute: o distinguished name (simple, multi-valued) Valid DN values are distinguished names that represent: - Profile object - Server object - Server group object NOTE: The server group object has the unique object identifier of 1.3.18.0.2.6.10. The distinguished name attribute is stored with an object identifier of 2.5.4.31. Program Installation Object The Program Installation object is defined by CPI Communications, but is included here for completeness. It contains two attributes, a program_function_ID and a program binding attribute: o Program function ID (simple, single-valued) See Appendix A, "Variables and Characteristics" for a description. o Program binding (complex, single-valued) See Appendix A, "Variables and Characteristics" for a description. Encoding Method for Complex Attribute Values The encoding method for complex attribute values is to follow the general method outlined in Appendix A, "Variables and Characteristics" for the program binding. Each complex value is a string of the general pattern "field_type=field_value; field_type=field_value" where field_type is a four-byte identifier for the field and field_value is a variable-length field. The end of a field_value is determined by the semicolon character. If the field_value itself contains a semicolon, the textual semicolon is repeated. Correct ordering of fields is shown above in the object definitions. Table 86 shows the 4-byte code for the field types required in the complex attributes of the new objects, along with a maximum length for each field_value. +--------------------------------------------------------------------------------------------------------------------------------+ | Table 86. Fields in Complex Attributes | +-----------------------------------------------------------------------------+-------------------------+------------------------+ | DESCRIPTION OF FIELD CONTENTS | 4-BYTE FIELD_TYPE CODE | MAXIMUM LENGTH OF | | | | FIELD | +-----------------------------------------------------------------------------+-------------------------+------------------------+ | priority--used in the profile record and server record attribute. | | 2 | | | PRIO | | | | | | +-----------------------------------------------------------------------------+-------------------------+------------------------+ | program function ID--used in the profile record and server record attribute | | 1024 | | | PFID | | | | | | +-----------------------------------------------------------------------------+-------------------------+------------------------+ | distinguished name--used in the profile record and server record attribute | | 1024 | | | DSTN | | | | | | +-----------------------------------------------------------------------------+-------------------------+------------------------+ ------------------------- Scenarios for Use of CNSI Programs access the CNSI directly by specifying a tuple of (function, priority/location, resource) and retrieve a PIDN. This PIDN is then passed to CPI-C using the Set_Partner_ID call. The program is able to control retry because it has the explicit option of retrieving each successive PIDN and attempting the Allocate. A sample sequence of calls is illustrated in Figure 30. cpic_ns_binding_lookup_begin ( PFID, (input) entry_name_syntax, (input) entry_DN_to_start_search, (input) ResID, (input) ns_handle, (output) status ) (output) While unsucessful do begin cpic_ns_binding_lookup_next ( ns_handle, (input) next_PIDN, (output) status ) (output) CMINIT(sym_dest_name = ' ', conversation_id) CMSPID(conversation_ID, partner_ID_type = CM_DISTINGUISHED_NAME, partner_ID = next_PIDN, partner_ID_length = length(next_PIDN), partner_ID_scope = CM_EXPLICIT, return_code) CMALLC(conversation_id, return_code) end cpic_ns_done(ns_handle, (input) /* clear up control blocks */ return_code) (output) Figure 30. Program Uses CNSI to Locate PIDN The sections that follow show the different combinations of parameters that can be provided to CNSI. The three-tuple shown as headings represents (program_function_ID, DN, resource_ID). (PFID, *, *) o Target: any program installation providing the function of the PFID. o CNSI reads default profile using PFID, returns PIDNs. (PFID, SDN, *) o Target: any program installation within the server that provides the function specified by the PFID. o CNSI reads SDN object, returns PIDNs paired with specified PFID. (PFID, SGDN, *) o Target: any program installation on any server within a server group. o CNSI reads SGDN object, obtaining list of SDNs. CNSI reads SDN objects (in random order), returning PIDNs that were paired with the specified PFID. (PFID, SDN, resID) o Target: program installation on the server with the specified resource and function. o CNSI reads SDN object and searches for match with resID. If match found, CNSI returns PIDNs that were paired with the specified PFID. (PFID, SGDN, resID) o Target: program installation on the server with the specified resource, within a server group. o CNSI reads SGDN object, obtaining list of SDNs. CNSI reads SDN objects (in random order) and searches for match with resID. If match found, CNSI returns PIDNs that were paired with the specified PFID. (PFID, PDN, *) o Target: any program installation providing the function specified by the PFID, using the priority specified by the profile object. o CNSI reads profile object and creates a list of elements with the specified PFID. In priority order, the associated object (PIDN, SDN, or SGDN) is read, and PIDNs are returned as above. (PFID, PDN, resID) o Target: program installation providing the specified function on a server with the specified resource, search order specified by profile object. o CNSI reads profile object and orders the list of elements with the PFID. In priority order, the associated object (SDN or SGDN) is read, and PIDNs are returned as above. Note that any PIDN found in the profile would have no meaning in this case, as there would be no associated resource. ---------------------------------------------------------------------------------------------------------------------------------- Appendix I. Application Migration from X/Open CPI-C to CPI-C 2.0 This appendix describes the application migration from X/Open CPI-C (as defined in the X/Open Developers' Specification CPI-C) to CPI-C 2.0. The following section lists the differences between X/Open CPI-C and CPI-C 2.0 that may require that changes be made to move a program from X/Open CPI-C to CPI-C 2.0. APPLICATION MIGRATION CONSIDERATIONS o When the Accept_Conversation call is issued and no incoming conversation exists, CPI-C 2.0 returns CM_PROGRAM_STATE_CHECK; X/Open CPI-C returns CM_OPERATION_INCOMPLETE and a conversation identifier. Programs that want to accept multiple conversations using the non-blocking processing mode should use the following calls instead of Accept_Conversation: - Initialize_For_Incoming - Set_Processing_Mode, with processing_mode set to CM_NON_BLOCKING - Accept_Incoming. See "Example 13: Accepting Multiple Conversations Using Conversation-Level Non-Blocking Calls" on page 1 for accepting conversations using non-blocking Accept_Incoming calls. o CPI-C 2.0 returns the CM_OPERATION_NOT_ACCEPTED return code if a conversation call is issued and the previous call on the conversation has not completed. X/Open CPI-C returns CM_PROGRAM_STATE_CHECK. o The Extract_Conversation_Security_User_ID (CMECSU) call of X/Open CPI-C is not supported in CPI-C 2.0. The function is available in CPI-C 2.0 using the Extract_Security_User_ID (CMESUI) call, which supports an increased length of the security_user_id. o The CPI-C 2.0 Convert_Incoming and Convert_Outgoing calls return CM_PROGRAM_PARAMETER_CHECK if the string_length exceeds the maximum length permitted by the local implementation. This return code is not supported in X/Open CPI-C for these calls. o The CM_SYNC_LEVEL_NOT_SUPPORTED_PGM return code of X/Open CPI-C must be changed to CM_SYNC_LVL_NOT_SUPPORTED_PGM. o The specify_Local_TP_Name call of X/Open CPI-C must be changed to Specify_Local_TP_Name. o X/Open CPI-C allows several processes to share the same conversation identifier. In CPI-C 2.0, the scope of the conversation_ID is system-dependent. o X/Open defines all functions as type CM_RETCODE (for example, extern CM_RETCODE CMACCP;). CPI-C 2.0 defines all functions as type void (for example, extern CM_ENTRY cmaccp;). Programs that test the return value of an X/Open CPI-C call have to test the return_code parameter value in CPI-C 2.0. o The readable macros (for example, Accept_Conversation instead of CMACCP) are only available in CPI-C 2.0 if the program or the include file contains a line #define READABLE_MACROS o Some parameter types in X/Open CPI-C and CPI-C 2.0 differ, as shown in Table 87. Some compilers may give out warnings when compiling existing X/Open CPI-C programs with the new CPI-C 2.0 include file. +----------------------------------------------------------------------------------------+ | Table 87. Parameter Type Differences | +---------------------------+---------------------------+--------------------------------+ | PARAMETER TYPE | X/OPEN CPI-C | CPI-C 2.0 | +---------------------------+---------------------------+--------------------------------+ | Conversation ID | CONVERSATION_ID | unsigned char CM_PTR | | Parameters | (that is, char [8]) | (that is, unsigned char *) | +---------------------------+---------------------------+--------------------------------+ | Character Pointers | char * | unsigned char CM_PTR | | | | (that is, unsigned char *) | +---------------------------+---------------------------+--------------------------------+ | Length Parameters | int * | CM_INT32 CM_PTR | | | | (that is, signed long int *) | +---------------------------+---------------------------+--------------------------------+ | Definitions of Return | typedef enum | #define | | Codes and Numeric | | | | Parameters | | | +---------------------------+---------------------------+--------------------------------+ ---------------------------------------------------------------------------------------------------------------------------------- Glossary +---+ | A | +---+ ALIAS. (1) An alternative name used to identify an object, a logical unit, or a database. (2) A nickname set up by the network administrator for a file, printer, or serial device. API. Application programming interface. APPLICATION-ENTITY. The part of an application-process that exclusively defines communications formats and protocols for OSI-compliant systems. APPLICATION-ENTITY-QUALIFIER. The qualifier that is used to identify a specific instance of an application-entity. It must be unambiguous within the scope of the application-process. See also ISO/IEC 7498-3. APPLICATION-PROCESS. The part of an open system that performs the information processing for a particular application. See also ISO/IEC 7498:1984. APPLICATION-PROCESS-TITLE. The unambiguous title of the application-process. It must be unambiguous within the OSI environment. See also ISO/IEC 7498-3. APPLICATION CONTEXT. The set of rules that define the exchange of information between two application programs. See also ISO/IEC 9545. APPLICATION CONTEXT NAME. The registered name of the application context. See also ISO/IEC 9545. APPLICATION PROGRAMMING INTERFACE (API). The set of programming language constructs or statements that can be coded in an application program to invoke the specific functions and services provided by an underlying operating system or service program. ASSOCIATION. A relationship between two application-entity instances for the purpose of exchanging data. An association is similar to an SNA LU 6.2 session and is sometimes called a logical connection. See also ISO/IEC 9594. +---+ | B | +---+ BASIC CONVERSATION. A conversation in which programs exchange data records in an SNA-defined format. This format is a stream of data containing 2-byte length prefixes that specify the amount of data to follow before the next prefix. BLOCKING. A CPI Communications call-processing mode in which a call operation completes before control is returned to the program. The program (or thread) is blocked (unable to perform any other work) until the call operation is completed. +---+ | C | +---+ CALLBACK FUNCTION. An application-defined function that is called when an outstanding operation completes. CHAINED TRANSACTIONS. A series of transactions in which the (n+1)th transaction begins immediately upon the termination of the nth transaction. See also ISO/IEC 10026-1. COMMON PROGRAMMING INTERFACE COMMUNICATIONS (CPI-C). A programming interface for applications that require program-to-program communication using the conversational model. COMMUNICATIONS RESOURCE MANAGER (CRM). The component within a system that manages a particular resource -- in this case, a conversational communications resource. See also X/Open Guide: Distributed Transaction Processing Reference Model. CONTEXT. A system-wide entity used by node services to group logical attributes for work done by a program on behalf of a partner program. CONTEXT IDENTIFIER. A system-wide identifier used by node services to identify a context. CONVERSATION. A logical connection between two programs over an LU type 6.2 session or OSI TP association that allows them to communicate with each other while processing a transaction. See also basic conversation and mapped conversation. CONVERSATION CHARACTERISTICS. The attributes of a conversation that determine the functions and capabilities of programs within the conversation. CONVERSATION PARTNER. One of the two programs involved in a conversation. CONVERSATION QUEUE. A logical grouping of CPI Communications calls on a conversation. Calls associated with a specific queue are processed serially. Calls associated with different queues are processed independently. CONVERSATION STATE. The condition of a conversation that reflects what the past action on that conversation has been and that determines what the next set of actions may be. CPI-C. Common Programming Interface Communications. CURRENT CONTEXT. For a program, the context within which work is currently being done. +---+ | D | +---+ DIRECTORY OBJECT. A collection of information that is represented in the distributed directory as a single entry. Directory objects consist of attributes, each of which has a type and one or more values. DISTINGUISHED NAME. A completely qualified name that is used to access an entry in a distributed directory. Contrast with local distinguished name. DISTRIBUTED DIRECTORY. A collection of open systems that cooperate to hold information about DIRECTORY OBJECTS. The directory is referred to as distributed because the data can be accessed from multiple locations in a network using local directory interfaces. DN. See distinguished name. +---+ | F | +---+ FULL-DUPLEX. Pertaining to communication in which data can be sent and received at the same time. Contrast with half-duplex. +---+ | H | +---+ HALF-DUPLEX. Pertaining to communication in which data can only be transmitted in one direction at a time. Contrast with full-duplex. +---+ | I | +---+ INITIALIZATION DATA. Application-specific data that may be exchanged between two application programs during conversation initialization. See also ISO/IEC 10026-2 for User-Data on TP-BEGIN-DIALOGUE and SNA Transaction Programmers Reference Manual for LU Type 6.2. +---+ | L | +---+ LOCAL DISTINGUISHED NAME. An incomplete distinguished name for an object in a distributed directory. The complete distinguished name is formed by prefixing the local distinguished name with a system-specific local prefix. LOCAL PROGRAM. The program being discussed within a particular context. Contrast with remote program. LOGICAL CONNECTION. The generic term used to refer to either an SNA LU 6.2 session or an OSI association. LOGICAL UNIT. A port providing formatting, state synchronization, and other high-level services through which an end user communicates with another end user over an SNA network. LOGICAL UNIT TYPE 6.2. The SNA logical unit type that supports general communication between programs in a distributed processing environment; the SNA logical unit type on which CPI Communications is built. +---+ | M | +---+ MAPPED CONVERSATION. A conversation in which programs exchange data records with arbitrary data formats agreed upon by the applications' programmers. MODE NAME. Part of the CPI Communications side information. The mode name is used by LU 6.2 to designate the properties for the logical connection that will be allocated for a conversation. +---+ | N | +---+ NETWORK NAME. In SNA, the symbolic identifier by which end users refer to a network accessible unit (NAU), link station, or link. NON-BLOCKING. A CPI Communications call-processing mode in which, if possible, a call operation completes immediately. If the call operation cannot complete immediately, control is returned to the program with the CM_OPERATION_INCOMPLETE return code. The call operation remains in progress, and completion of the call operation occurs at a later time. Meanwhile, the program is free to perform other work. +---+ | O | +---+ OSI TP. Refers to the International Standard ISO/IEC 10026, Information Technology -- Open Systems Interconnection -- Distributed Transaction Processing. ISO/IEC 10026 is one of a set of standards produced to facilitate the interconnection of computer systems. OUTSTANDING OPERATION. A call operation for which the program has received the CM_OPERATION_INCOMPLETE return code. The call operation remains in progress, and completion occurs at a later time. An outstanding operation can only occur on a conversation using non-blocking processing mode. +---+ | P | +---+ PARTIAL DISTINGUISHED NAME. See local distinguished name. PARTNER. See conversation partner. PARTNER PRINCIPAL NAME. The name by which the distributed security service knows the target partner. PFID. See program function ID. PRINCIPAL. Any entity which participates in an authentication exchange. PRIVILEGE. An identification that a product or installation defines in order to differentiate SNA service transaction programs from other programs, such as application programs. PROGRAM FUNCTION ID. A unique identifier for the function performed by a particular program. Multiple installations of a program may have equivalent program function IDs (PFID). PROTECTED RESOURCE. A local or distributed resource that is updated in a synchronized manner during processing managed by a resource recovery interface and a sync point manager. PSEUDONYM FILE. A file that provides CPI Communications declarations for a particular programming language. +---+ | R | +---+ REMOTE PROGRAM. The program at the other end of a conversation with respect to the reference program. Contrast with local program. RESOURCE RECOVERY INTERFACE. An interface to services and facilities that use two-phase commit protocols to coordinate changes to distributed resources. +---+ | S | +---+ SECONDARY INFORMATION. Information associated with the return code at the completion of a call. The information can be used to determine the cause of the return code. SESSION. A logical connection between two logical units that can be activated, tailored to provide various protocols, and deactivated as requested. SIDE INFORMATION. System-defined values that are used for the initial values of the conversation_security_type, mode_name, partner_LU_name, security_password, security_user_ID, and TP_name characteristics. STATE. See conversation state. STATE TRANSITION. The act of moving from one conversation state to another. SUBORDINATE PROGRAM. The application program that issued either Accept_Conversation or Accept_Incoming for a protected conversation. SUPERIOR PROGRAM. The application program that issued Initialize_Conversation for a protected conversation. SYMBOLIC DESTINATION NAME. Variable corresponding to an entry in the side information. SYNCHRONIZATION POINT. A reference point during transaction processing to which resources can be restored if a failure occurs. SYNC POINT MANAGER. A component of the operating environment that coordinates commit and backout processing among all the protected resources involved in a sync point transaction. Synonymous with transaction manager. SYSTEMS NETWORK ARCHITECTURE. A description of the logical structure, formats, protocols, and operational sequences for transmitting information units through, and controlling the configuration and operation of, networks. +---+ | T | +---+ TRANSACTION. A related set of operations that are characterized by the ACID (atomicity, consistency, isolation, and durability) properties. See also ISO/IEC 10026-1. TRANSACTION MANAGER. The component within a system that manages the coordination of resources within a transaction. Synonymous with sync point manager. See also X/Open Guide: Distributed Transaction Processing Reference Model. TRANSITION. See state transition. +---+ | U | +---+ UNCHAINED TRANSACTIONS. A series of transactions in which the (n+1)th transaction does not begin immediately upon the termination of the nth transaction, but is explicitly started at a later time. See also ISO/IEC 10026-1. USER FIELD. Application data that can be associated with an outstanding operation. The data, as specified by the program, can be returned to the program through a Wait_For_Completion call issued for that outstanding operation, or it can be passed to the callback function associated with the outstanding operation, when the operation completes. +---+ | X | +---+ X/OPEN. X/Open is an independent, worldwide, open systems organization whose mission is to bring users greater value from computing, through the practical implementation of open systems. X/OPEN TX INTERFACE. X/Open Distributed Transaction Processing: The TX (Transaction Demarcation) Specification defines an interface between the transaction manager and the application program. It is similar to the IBM SAA resource recovery interface. ---------------------------------------------------------------------------------------------------------------------------------- Index +--------------------+ | SPECIAL CHARACTERS | +--------------------+ - (dash) 1 _ (underscore) 1 . (period) 1 & (ampersand) 1 +---+ | A | +---+ abnormal program ending 1 Accept Conversation ( CMACCP) 1 Accept_Incoming (CMACCI) 1 acknowledgement 1 advanced program-to-program communications See also LU 6.2 verbs 2 advanced-function calls description 1 examples 1 list 1 AE_qualifier, defined 1 Allocate (CMALLC) 1 allocate_confirm 1 AP_title 1 AP_title, defined 1 APPC See advanced program-to-program communications Application Generator considerations 1 application migration 3 from X/Open CPI-C to CPI-C 2.0 3 application_context_name 1 application_context_name, defined 1 ASCII, conversion of 1 +---+ | B | +---+ backout-required condition described 1 effect on multiple conversations 1 basic conversation 1 begin conversation CMALLC (Allocate) 1 example flow 1 program startup 1 simple example 1 begin_transaction 1 blank sym_dest_name 1 blocking operations 1 buffering of data description 1 example flow 1 +---+ | C | +---+ C considerations 1 call reference format 1 how to use 1 parameters 1 related information 1 RPG 1 state changes 1 usage notes 1 call_ID 1 callback_function 1 callback_info 1 calls advanced-function examples 1 list 1 call characteristics See characteristics, call characteristics description 1 for resource recovery interfaces 1 naming convention 1 possible values, table 1 starter-set examples 1 list 1 Cancel_Conversation (CMCANC) 1 chained transactions 1 changing data flow direction by receiving program 1 by sending program 1 character sets exceptions for SNA TP names 2 general 1 T61String 1 character strings 1 characteristics automatic conversion of 1 call characteristics AE_qualifier 1 allocate_confirm 1 AP_title 1 application_context_name 1 begin_transaction 1 call_ID 1 confirmation_urgency 1 context_ID 1 conversation_queue 1 conversation_return_code 1 conversation_security_type 1 conversation_state 1 conversation_type 1 deallocate_type 1 directory_encoding 1 directory_syntax 1 error_direction 1 expedited_receive_type 1 fill 1 initialization_data 1 log_data 1 mode_name 1 OOID_list_count 1 partner_ID_scope 1 partner_ID_type 1 partner_LU_name 1 prepare_data_permitted 1 prepare_to_receive_type 1 processing_mode 1 queue_callback_function 1 queue_processing_mode 1 receive_type 1 return_control 1 security_password 1 security_user_ID 1 send_receive_mode 1 send_type 1 sync_level 1 TP_name 1 transaction_control 1 comparison of defaults 1 default values 1 examining 1 initial values, table 1 integer values 1 modifying 1 naming convention 1 pseudonym 1 viewing 1 CMACCI (Accept_Incoming) 1 CMACCP (Accept_Conversation) 1 CMALLC (Allocate) 1 CMCANC (Cancel_Conversation) 1 CMCFM (Confirm) 1 CMCFMD (Confirmed) 1 CMCNVI (Convert_Incoming) 1 CMCNVO (Convert_Outgoing) 1 CMDEAL (Deallocate) 1 CMDFDE (Deferred_Deallocate) 1 CMEACN (Extract_Application_Context_Name) 1 CMEAEQ (Extract_AE_Qualifier) 1 CMEAPT (Extract_AP_Title) 1 CMECS (Extract_Conversation_State) 1 CMECT (Extract_Conversation_Type) 1 CMECTX (Extract_Conversation_Context) 1 CMEID (Extract_Initialization_Data) 1 CMEMBS (Extract_Maximum_Buffer_Size) 1 CMEMN (Extract_Mode_Name) 1 CMEPID (Extract_Partner_ID) 1 CMEPLN (Extract_Partner_LU_Name) 1 CMESI (Extract_Secondary_Information) 1 CMESL (Extract_Sync_Level) 1 CMESRM (Extract_Send_Receive_Mode) 1 CMESUI (Extract_Security_User_ID) 1 CMETC (Extract_Transaction_Control) 1 CMETPN (Extract_TP_Name) 1 CMFLUS (Flush) 1 CMINCL (Include_Partner_IN_Transaction) 1 CMINIC (Initialize_For_Incoming) 1 CMINIT (Initialize_Conversation) 1 CMPREP (Prepare) 1 CMPTR (Prepare_To_Receive) 1 CMRCV (Receive) 1 CMRCVX (Receive_Expedited_Data) 1 CMRLTP (Release_Local_TP_Name) 1 CMRTS (Request_To_Send) 1 CMSAC (Set_Allocate_Confirm) 1 CMSACN (Set Application_Context_Name) 1 CMSAEQ (Set_AE_Qualifier) 1 CMSAPT (Set_AP_Title) 1 CMSBT (Set_Begin_Transaction) 1 CMSCSP (Set_Conversation_Security_Password) 1 CMSCST (Set_Conversation_Security_Type) 1 CMSCSU (Set_Conversation_Security_User_ID) 1 CMSCT (Set_Conversation_Type) 1 CMSCU (Set_Confirmation_Urgency) 1 CMSDT (Set_Deallocate_Type) 1 CMSED (Set_Error_Direction) 1 CMSEND (Send_Data) 1 CMSERR (Send_Error) 1 CMSF (Set_Fill) 1 CMSID (Set_Initialization_Data) 1 CMSLD (Set_Log_Data) 1 CMSLTP (Specify_Local_TP_Name) 1 CMSMN (Set_Mode_Name) 1 CMSNDX (Send_Expedited_Data) 1 CMSPDP (Set_Prepare_Data_Permitted) 1 CMSPID (Set_Partner_ID) 1 CMSPLN (Set_Partner_LU_Name) 1 CMSPM (Set_Processing_Mode) 1 CMSPTR (Set_Prepare_To_Receive_Type) 1 CMSQCF (Set_Queue_Callback_Function) 1 CMSQPM (Set_Queue_Processing_Mode) 1 CMSRC (Set_Return_Control) 1 CMSRT (Set_Receive_Type) 1 CMSSL (Set_Sync_Level) 1 CMSSRM (Set_Send_Receive_Mode) 1 CMSST (Set_Send_Type) 1 CMSTC (Set_Transaction_Control) 1 CMSTPN (Set_TP_Name) 1 CMTRTS (Test_Request_To_Send_Received) 1 CMWAIT (Wait_For_Conversation) 1 CMWCMP (Wait_For_Completion) 1 CNSI (CPI Communications name service interface) 3 attributes complex 3 simple 3 single-valued 3 encoding for complex attributes fields 3 profile object 3 program_installation object 3 sample calls 3 scenarios 3 server object 3 COBOL considerations 1 commit call by sending program 1 conversation deallocation before 1 example flow 1 with conversation state change 1 commit tree, illustrated 1 common programming interface (CPI) communications See CPI Communications communication across an SNA network 1 resource manager (CRM) 1 with an APPC program 2 completed_op_count 1 completed_op_index_list 1 concurrent conversations 1 concurrent operations conversation queues 1 multiple program threads 1 association of calls, table 1 Confirm (CMCFM) 1 Confirm state 1 Confirm-Deallocate state 1 Confirm-Send state 1 confirmation processing Confirm call 1 Confirmed call 1 example flow 1 confirmation_urgency 1 Confirmed (CMCFMD) 1 conformance class 3 contexts changing 1 creating 1 current 1 identifier 1 relationship conversation 1 security parameter 1 setting 1 control_information_received 1 control_information_received parameter 1 convention, naming 1 conversation accept 1 allocate 1 basic 1 canceling 1 characteristics See also characteristics, call characteristics described 1 overview 1 concurrent 1 dangling See dangling conversation, deallocating deallocate 1 description 1 examples 1 full-duplex setting up 1 terminating 1 using 1 identifier 1 illustration inbound and outbound 1 initialize 1 mapped 1 multiple 1 multiple inbound illustration 1 in server programs 1 multiple outbound conversation_ID 1 illustration 1 queues 1 states See states, conversation synchronization and control Confirm call 1 Confirmed call 1 Flush call 1 Prepare_To_Receive call 1 Request_To_Send call 1 Send_Error 1 Test_Request_To_Send_Received 1 transition from a state 1 types 1 conversation_ID described 1 conversation security access security information 1 incompatible values, table 1 conversation states additional CPI states 1 description 1 extracting 1 full-duplex protected conversations (CPIRR) 2 full-duplex protected conversations (X/Open) 2 half-duplex protected conversations (CPIRR) 2 half-duplex protected conversations (X/Open) 2 list 1 possible values 1 pseudonym 1 table full-duplex 2 half-duplex 2 valid for resource recovery 1 conversation type characteristic 1 conversation_queue 1 conversation_return_code 1 conversation_security_type, defined 1 conversion characteristics 1 data 1 conversion to and from ASCII 1 Convert_Incoming (CMCNVI) 1 Convert_Outgoing (CMCNVO) 1 CPI Communications audience 1 communication with APPC programs 2 conversational model 1 CPI-C 1.0 1 CPI-C 1.1 1 CPI-C 1.2 1 CPI-C 2.0 1 directory object 1 functional levels 1 history 1 in SNA networks 1 introducing 1 mapping for half-duplex 2 mapping to LU 6.2 and OSI TP 2 mapping to OSI TP 2 name service interface (CNSI) 3 naming convention 1 overview 1 program operating environment 1 relationship to LU 6.2 interface 2 relationship to OSI TP interface 2 versions of, table 1 with resource recovery interfaces 1 X/Open extensions 1 CPI-C See CPI Communications CRM characteristic values 1 for LU 6.2 1 for OSI TP 1 using particular type 1 CSP considerations 1 +---+ | D | +---+ dangling conversation, deallocating 1 data buffering and transmission 1 direction, changing by receiving program 1 by sending program 1 flow in both directions 1 in one direction 1 purging 1 reception and validation of 1 data records description 1 Receive call 1 Send_Data call 1 data_received parameter 1 DCE directory DCE interface 3 directory objects 3 interaction of 3 extensions 3 profile object 3 server group object 3 server object 3 Deallocate (CMDEAL) 1 deallocate_type characteristic 1 Deferred_Deallocate (CMDFDE) 1 destination name, symbolic blank 1 defined 1 example 1 directory_encoding 1 directory_syntax 1 distinguished name, naming convention 1 distinguished_name, defined 1 distributed directory defined 1 directory object 1 distinguished name (DN) 1 illustration generic program interaction 1 interaction with CPI Communications 1 locating partner program 1 program function identifier (PFID) 1 program interaction 1 using 1 distributed security illustration of CRM interaction 1 principal names 1 DN, specifying default 1 +---+ | E | +---+ EBCDIC, conversion to 1, 3 error_direction characteristic and Send-Pending state 1, 2 error reporting example 1 Send_Error call 1 examining conversation characteristics 1 See also extract calls example flows See tutorial information expedited_receive_type 1 extract calls AE Qualifier (CMEAEQ) 1 AP_Title (CMEAPT) 1 Application_Context_Name (CMEACN) 1 Conversation_Context (CMECTX) 1 Conversation_State (CMECS) 1 Conversation_Type (CMECT) 1 Initialization_Data (CMEID) 1 Maximum_Buffer_Size (CMEMBS) 1 Mode_Name (CMEMN) 1 Partner_ID (CMEPID) 1 Partner_LU_Name (CMEPLN) 1 Secondary_Information (CMESI) 1 Security_User_ID (CMESUI) 1 Send_Receive_Mode (CMESRM) 1 Sync_Level (CMESL) 1 TP_Name (CMETPN) 1 Transaction_Control (CMETC) 1 Extract_AE_Qualifier (CMEAEQ) 1 Extract_AP_Title (CMEAPT) 1 Extract_Application_Context_Name (CMEACN) 1 Extract_Conversation_Context (CMECTX) 1 Extract_Conversation_State (CMECS) 1 Extract_Conversation_Type (CMECT) 1 Extract_Initialization_Data (CMEID) 1 Extract_Maximum_Buffer_Size (CMEMBS) 1 Extract_Mode_Name (CMEMN) 1 Extract_Partner_ID (CMEPID) 1 Extract_Partner_LU_Name (CMEPLN) 1 Extract_Secondary_Information (CMESI) 1 Extract_Security_User_ID (CMESUI) 1 Extract_Send_Receive_Mode (CMESRM) 1 Extract_Sync_Level (CMESL) 1 Extract_TP_Name (CMETPN) 1 Extract_Transaction_Control (CMETC) 1 +---+ | F | +---+ fill characteristic 1 flow definition of 1 diagrams 1 Flush (CMFLUS) 1 FORTRAN considerations 1 full-duplex See states, conversation +---+ | G | +---+ graphic representations for character sets table 1 +---+ | H | +---+ half-duplex See states, conversation +---+ | I | +---+ identifier (PFID) 1 Include_Partner_In_Transaction (CMINCL) subordinate 1 initialize conversation 1 state 1 Initialize_Conversation (CMINIT) 1 Initialize_For_Incoming (CMINIC) 1 Initialize_Incoming state 1 integer values 1 interface, communications See CPI Communications +---+ | K | +---+ key topics 1 +---+ | L | +---+ language considerations, programming 1 local partner 1 locating partner program using distributed directory 1 log_data characteristic set 1 logical connection association 1 session 1 logical records description 1 Receive call 1 Send_Data call 1 logical unit See also LU 6.2 illustration 1 LU See logical unit LU 6.2 and CPI communications calls 2 relationship of verbs, table 2 +---+ | M | +---+ MAP_NAME 2 mapped conversation 1 mode name, defined 1 mode_name characteristic defined 1 extract 1 length 1 set 1 mode_name SNASVCMG Allocate call 1 Set_Mode_Name call 1 mode, processing 1 modifying conversation characteristics 1 See also set calls multiple conversations inbound 1 outbound 1 multiple program threads 1 +---+ | N | +---+ naming conventions 1 node services 1 non-blocking operations calls returning incomplete, table 1 context management 1 conversation-level 1 operations 1 outstanding operation 1 processing_mode 1 queue-level callback function 1 using 1 wait facility 1 +---+ | O | +---+ OOID_list 1 OOID_list_count 1 operating environment example in CPI 1 generic elements 1 illustration 1 OSI TP and CPI Communications 2 application programming interface 2 full-duplex conversations 2 outstanding operations 1 +---+ | P | +---+ parameters input 1 output 1 partner identify partner program distributed directory 1 program supplied 1 side information 1 install naming programs 1 program binding 1 program function ID 1 program installation object 1 partner_ID 1 partner_ID_scope 1 partner_ID_type 1 partner_LU_name characteristic extract 1 length 1 set 1 partner_LU_name, defined 1 PFID (program function identifier) defined 1 relationship to DNs, illustrated 1 PFID assignment algorithms 1 PIP data 2 PL/I considerations 1 Prepare (CMPREP) preparing for commit 1 prepare_data_permitted 1 Prepare_To_Receive (CMPTR) 1 prepare_to_receive_type characteristic 1 program asynchronous updates of variables 1 calls 1 compilation 1 partners 1 startup processing 1 states See states, conversation termination processing 1 program binding defined 1 errors 1 extracting 1 fields table 1 sample 1 programming language considerations 1 protected conversation 1 protected resource 1 pseudonym example 1 explanation 1 values 1 pseudonym files Application Generator (CSP) 2 C 2 COBOL 3 FORTRAN 3 PL/I 3 REXX 3 RPG 3 samples of 2 +---+ | Q | +---+ queue-level example flow 1 non-blocking 1 queue_processing_mode 1 queues calls associated with 1 conversation queues 1 +---+ | R | +---+ Receive (CMRCV) 1 Receive state description 1 how a program enters 1 Receive_Expedited_Data (CMRCVX) expedited_receive_type 1 receive_type characteristic 1 records, logical description 1 Receive call 1 Send_Data call 1 relative distinguished_name, defined 1 Release_Local_TP_Name (CMRLTP) 1 remote partner definition 1 residing on local system 1 reporting errors example 1 Send_Error call 1 Request_To_Send (CMRTS) 1 Reset state 1 resource recovery interfaces described 1 return codes 1--2 return_code parameter definitions of values 1--2 described 1 possible values 1 return_control characteristic 1 REXX considerations 1 +---+ | S | +---+ SAA resource recovery interface with CPI Communications 1 sample programs CREDRPT program 3 introduction 3 pseudonym file for 3 SALESRPT program 3 successful program execution results of 3 secondary information application-oriented 2 CPI-defined 2 table 2 CRM-specific examples from LU 6.2 2 examples from OSI TP 2 different types and condition codes 2 table 2 implementation-related examples 2 types and return codes not associated with 2 table 2 security_password, defined 1 security_user_ID, defined 1 Send state description 1 Send-Pending state and error_direction characteristic 2 description 1 error direction 1 send-receive mode characteristic values not set for full-duplex, table 1 not set for half-duplex, table 1 send control 1 Send_Data (CMSEND) 1 Send_Error (CMSERR) 1 Send_Expedited_Data (CMSNDX) 1 send_type characteristic 1 service transaction programs 2 set calls AE_qualifier 1 allocate_confirm 1 AP_title 1 application_context_name 1 begin_transaction 1 confirmation_urgency 1 conversation_security_password 1 conversation_security_type 1 conversation_security_user 1 conversation_type 1 deallocate_type 1 error_direction 1 fill 1 initialization_data 1 log_data 1 mode_name 1 partner_ID 1 partner_LU_name 1 prepare_data_permitted 1 prepare_to_receive_type 1 processing_mode 1 queue_callback_function 1 queue_processing_mode 1 receive_type 1 return_control 1 send_receive_mode 1 send_type 1 sync_level 1 TP_name 1 transaction_control 1 Set_AE_Qualifier (CMSAEQ) 1 Set_Allocate_Confirm (CMSAC) 1 Set_AP_Title (CMSAPT) 1 Set_Application_Context_Name (CMSACN) 1 Set_Begin_Transaction (CMSBT) 1 Set_Confirmation_Urgency (CMSCU) 1 Set_Conversation_Security_Password (CMSCSP) 1 Set_Conversation_Security_Type (CMSCST) 1 Set_Conversation_Security_User_ID (CMSCSU) 1 Set_Conversation_Type (CMSCT) 1 Set_Deallocate_Type (CMSDT) 1 Set_Error_Direction (CMSED) 1 Set_Fill (CMSF) 1 Set_Initialization_Data (CMSID) 1 Set_Log_Data (CMSLD) 1 Set_Mode_Name (CMSMN) 1 Set_Partner_ID (CMSPID) 1 Set_Partner_LU_Name (CMSPLN) 1 Set_Prepare_Data_Permitted (CMSPDP) 1 Set_Prepare_To_Receive_Type (CMSPTR) 1 Set_Processing_Mode (CMSPM) 1 Set_Queue_Callback_Function (CMSQCF) 1 Set_Queue_Processing_Mode (CMSQPM) 1 Set_Receive_Type (CMSRT) 1 Set_Return_Control (CMSRC) 1 Set_Send_Receive_Mode (CMSSRM) 1 Set_Send_Type (CMSST) 1 Set_Sync_Level (CMSSL) 1 Set_TP_Name (CMSTPN) 1 Set_Transaction_Control (CMSTC) 1 side information, defining overview 1 purpose 1 setting and accessing 1 SNA network 1 service transaction programs 2 Specify_Local_TP_Name (CMSLTP) 1 starter-set calls examples 1 list 1 state tables, full-duplex abbreviations conversation characteristics 2 conversation queues 2 data_received and status_received 2 return code values 2 table symbols 2 state tables, half-duplex 2 abbreviations 2 conversation characteristics 2 conversation queues 2 data_received and status_received 2 return code values 2 example of how to use 2 table symbols 2 state transition 1 states, conversation additional CPI states 1 description 1 extracting 1 full-duplex protected conversations (CPIRR) 2 full-duplex protected conversations (X/Open) 2 half-duplex protected conversations (CPIRR) 2 half-duplex protected conversations (X/Open) 2 list 1 possible values 1 pseudonym 1 table full-duplex 2 half-duplex 2 valid for resource recovery 1 status_received parameter 1 strings, character 1 subordinate program 1 superior program 1 sym_dest_name See symbolic destination name symbolic destination name blank 1 defined 1 example 1 sync point described 1 logical unit of work 1 sync point manager (SPM) 1 transaction manager 1 sync_level characteristic 1 synchronization point See sync point Systems Network Architecture network 1 service transaction programs 2 +---+ | T | +---+ T61String 1 take-backout notification responses to table 1 take-commit notification responses to table 1 Test_Request_To_Send_Received (CMTRTS) 1 TP_name characteristic extract 1 set 1 TP_name, defined 1 transaction chained 1 join explicit request 1 implicit request 1 responses, table 1 unchained 1 transaction_control, chained or unchained 1 transition, state 1 transmission of data 1 tutorial information example flows 1 how to use this book 1 terms and concepts 1 types of conversations 1 +---+ | U | +---+ unchained transactions 1 USER_CONTROL_DATA 2 user_field 1 user_field_list 1 +---+ | V | +---+ validation of data reception 1 values integers 1 pseudonym 1 variables characteristics, table 1 integer values 1 lengths 1 pseudonym 1 types 1 types and lengths, table 1 viewing conversation characteristics 1 +---+ | W | +---+ Wait_For_Completion (CMWCMP) 1 Wait_For_Conversation (CMWAIT) 1